C++ 中有没有办法在编写代码时限制对类的某些函数的访问?因此在某些 IDE 中,在一种情况下,工具提示中只建议了 f1,而 f2 和 f3 无法使用。在另一种情况下(例如,模板类,在另一种情况下,模板传递了另一种数据类型),所有三个方法都将被“提示”。那些。C++ 是否允许重载特定的类模板
template <typename T>
class Test
{
public:
void f1();
void f2();
void f3();
}
因此,例如,在编写代码时
Test<int>().
IDE 在工具提示中提供了所有三种方法,但是当
Test<double>().
只有f1是开放的吗?防止 f2 和 f3 出现在工具提示中。也许有一种方法可以在不使用模板的情况下解决?
如果我理解正确,那么
下一步是定义或不定义
USE_FUNC3。在某些IDE中,这可以在项目设置中完成,例如在 qt creator 中可以DEFINES += USE_FUNC3在 .pro 文件中进行设置。另一种选择是创建一个文件
project_settings.h并向其中添加以下行:如果我误解了什么,请纠正我,我很乐意提供帮助。我恳请您在将来更清楚地提出您的问题。
为此有模板专业化,即 每个专业(如果需要)将有自己的一组功能。
它将准确地为您提供您所要求的:只有一种专业化
double方法和三种其他方法。这里唯一的问题是功能代码的重复
f1。这可以通过将代码移动到某个公共实体并从那里调用公共实现来避免。选项可能不同:从公共类继承、自由函数、类内部使用的某些对象等。