C++从另一个类调用一个函数

CM9*_*M99 9 c++ class function

非常新的c ++无法从另一个类调用函数.

B类继承自A类,我希望A类能够调用在B类中创建的函数.

using namespace std;

class B;

class A 
{

public:

    void CallFunction ()
    {
        B b;
        b.bFunction();
    }

};

class B: public A
{
public:
    virtual void bFunction()
        {
            //stuff done here
        }

};
Run Code Online (Sandbox Code Playgroud)

它在屏幕上看起来都很好(没有明显的错误)但是当我尝试编译它时我得到一个错误C2079'b'使用未定义的B类.

我试过让它们成为指针/ friends但是我得到了同样的错误,

nis*_*tjr 11

    void CallFunction ()
    {   // <----- At this point the compiler knows
        //        nothing about the members of B.
        B b;
        b.bFunction();
    }
Run Code Online (Sandbox Code Playgroud)

出现这种情况的原因与C中的函数不能相互调用而其中至少有一个被声明为函数原型的原因相同.

要解决此问题,我们需要确保在使用它们之前声明这两个类.我们将声明与定义分开.这篇MSDN文章更详细地解释了声明和定义.

class A
{
public:
    void CallFunction ();
};

class B: public A
{
public:
    virtual void bFunction()
    { ... }
};

void A::CallFunction ()
{
    B b;
    b.bFunction();
}
Run Code Online (Sandbox Code Playgroud)