C++如何创建创建派生类对象的基类,并访问基类的私有成员?

waa*_*919 0 c++ inheritance base-class derived-class

有什么办法可以让我derived class访问 的private成员,base class同时能够derivedbase class内部的方法上创建对象base class

像这样的东西:

class Derived;

class Base
{
public:
    void func()
    {
        // I want to create the derived obj here
        Derived derived;
        derived.func();
    }
public:
    int mBase = 5;
};

class Derived : public Base
{
public:
    void func()
    {
        // I need to have access to the private members of Base inside this method
        mBase = 6; 
    }
};
Run Code Online (Sandbox Code Playgroud)

错误如下:

Error: derived uses undefined class Derived.
Run Code Online (Sandbox Code Playgroud)

我怎么能做这样的事情?

谢谢

Som*_*ude 5

为了能够使用Derived类并调用其中的成员函数(包括构造函数和析构函数),需要提供完整的定义。在这种情况下,它不在Base::func函数中。

解决方案很简单:不要定义func内联,只需声明它,然后Derived在定义类后实现(定义)它。