没有字段命名

Cod*_*rek 4 c++ constructor

我在使用两种不同的方法初始化继承类中的成员数据时我无法理解,我认为它们在理论上应该是相同的.

class gSolObject
    {
    public:
        gSolObject();
        virtual ~gSolObject(){}
        bool   isCollisionObject;
    };

class gPlanetObject : public gSolObject
    {
    public:
        gPlanetObject();
       ~gPlanetObject(){};
    };

gSolObject::gSolObject():isCollisionObject(1)
            {
            }

gPlanetObject::gPlanetObject():gSolObject(),isCollisionObject(0)
            {
            }
Run Code Online (Sandbox Code Playgroud)

我得到一个错误类' gPlanetObject'没有任何名为'isCollisionObject '的字段.

但是,当我将初始化权限放入构造函数的括号{..}时:

gPlanetObject::gPlanetObject():gSolObject()
            {
            isCollisionObject=0;
            }
Run Code Online (Sandbox Code Playgroud)

它汇编很好.那为什么会这样?

编辑:这也行不通

gPlanetObject::gPlanetObject():gSolObject(),gSolObject::isCollisionObject(0)
Run Code Online (Sandbox Code Playgroud)

它写''之前的'期望的类名'('令牌'

Ben*_*igt 7

您无法初始化在基类中声明的成员变量,因为基类构造函数已经初始化它们. 所有基础构造函数在成员构造函数之前执行.

你可以重新分配它.或者,您可以调用一个基类构造函数,该构造函数接受一个参数并使用该值初始化其成员.