C++ 直接调用非静态方法
我正在从事一个项目,我面临着一个有点奇怪的代码,我无法理解为什么会发生这种情况,以及如何发生这种情况 我有一个类Foo和Baz,Foo有一个从Baz类调用的非静态方法,而不实例化Foo:C++ 直接调用非静态方法,c++,methods,static,call,C++,Methods,Static,Call,我正在从事一个项目,我面临着一个有点奇怪的代码,我无法理解为什么会发生这种情况,以及如何发生这种情况 我有一个类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);
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 !!
}
唯一可行的方法是,如果
Baz
是从Foo
在某种程度上派生出来的
当然,Foo
在该范围内具有不同的含义(通过using、typedef、define或其他)
如果两者都不适用,则编译器将严重损坏。唯一可行的方法是在某种程度上从
Foo
派生Baz
当然,Foo
在该范围内具有不同的含义(通过using、typedef、define或其他)
如果两者都不适用,则编译器严重损坏。如果
Baz
继承自Foo
,则可能发生这种情况
在这种情况下,您可以直接以您提到的形式调用基类的方法:
void Baz::bar(void){
Foo::qux(2,3);
}
如果从
Foo
继承了Baz
,则可能发生这种情况
在这种情况下,您可以直接以您提到的形式调用基类的方法:
void Baz::bar(void){
Foo::qux(2,3);
}
你确定那是实际代码吗?也许baz是从foo继承的?你确定那是真正的代码吗?也许baz继承了foo?没错baz继承了foo。。谢谢你的提示:)没错,Baz继承了Foo。。谢谢你的提示:)没错,Baz继承了Foo。。谢谢你的提示:)没错,Baz继承了Foo。。谢谢你的提示:)