我是C ++的新手,在以下代码中,我想调用该A::f
函数
namespace Top
{
class B
{
public:
void hello()
{
Top::A::f();
}
};
class A
{
public:
static void f()
{
printf("123\n");
}
};
}
int main()
{
Top::B b;
b.hello();
return 0;
}
但是出现了以下错误
Error C2039 "f": not a member of "Top"
Error C3083 "A": The symbol on the left side of "::" must be a type
Error C3861 "f": Cannot find identifier
我该如何修复我的代码,谢谢
您不能在函数被声明之前调用它。切换两个类,以便在定义B
编译器时就已经知道A::f
:
namespace Top
{
class A
{
public:
static void f()
{
printf("123\n");
}
};
class B
{
public:
void hello()
{
Top::A::f();
}
};
}
int main()
{
Top::B b;
b.hello();
return 0;
}
PS:不是这个问题的主题,但是static
当您实际上想要命名空间内的自由函数时,不要滥用方法。在可能的情况下,C ++比成员函数更喜欢自由函数。不需要成为成员的任何方法都有助于实现更简洁的类设计。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句