直接调用非静态方法

时间:2014-04-30 11:27:58

标签: 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);          // This should not happen as qux is not a static method !!
}

2 个答案:

答案 0 :(得分:3)

唯一可行的方法是Baz是否来自某个级别的Foo

或者,当然,Foo在该范围内具有不同的含义(通过using,typedef,define或其他)。

如果两者都不适用,那么你的编译器就会被严重破坏。

答案 1 :(得分:1)

如果Baz继承自Foo,则会发生这种情况。

在这种情况下,您可以直接以您提到的形式调用基类的方法:

void Baz::bar(void){
    Foo::qux(2,3);
}