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

在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"){

	}
};

你可能感兴趣的:(C/C++,c++,java,servlet)