我正在研究一个项目,我面临一些奇怪的代码,我无法理解为什么以及如何发生这种情况!
我有一个类Foo和Baz,并且Foo有一个非静态方法,从Baz类调用而不实例化Foo:
class Foo {
public:
void qux(int a, int b);
};
class Baz {
public:
void bar(void);
};
void Baz::bar(void){
Foo::qux(2,3); // This should not happen as qux is not a static method !!
}
答案 0 :(得分:3)
唯一可行的方法是Baz
是否来自某个级别的Foo
。
或者,当然,Foo
在该范围内具有不同的含义(通过using,typedef,define或其他)。
如果两者都不适用,那么你的编译器就会被严重破坏。
答案 1 :(得分:1)
如果Baz
继承自Foo
,则会发生这种情况。
在这种情况下,您可以直接以您提到的形式调用基类的方法:
void Baz::bar(void){
Foo::qux(2,3);
}