cpp不能在子类中构造函数的初始化成员列表中直接初始化基类成员变量

⌚Time: 2023-10-28 18:12:29

👨‍💻Author: Jack Ge

在C++中,派生类的构造函数可以调用基类的构造函数来初始化基类的成员变量。但是无法在派生类的构造函数的初始化列表中直接初始化基类的成员变量。

如果那样做,会报错:xx不是类xx的非静态成员或基类

例子


class StatusBase{

public:

    ~StatusBase(){



    }

    StatusBase():m_name("StatusBase"){

    }

    StatusBase(char* name){

        m_name=name;

    }

protected:

    string m_name;

};

class StatusIdle :public StatusBase{

public:

    StatusIdle():m_name("Idle"){



    }

};

解决办法可以是调用父类的有参构造函数或者直接在构造函数里面对基类成员变量赋值


class StatusIdle :public StatusBase{

public:

    StatusIdle():StatusBase("Idle"){



    }

};