在标题中,我正在定义bool isActive。在从这个派生的类中,我想默认使isActive为false。我尝试通过添加
来做到这一点AbstractClass::isActive = false;
到cpp文件,但是会导致错误“预期的构造函数,析构函数或'='标记之前的类型转换。”
答案 0 :(得分:9)
在类'构造函数中初始化它:
class AbstractClass {
bool isActive;
AbstractClass() : isActive(false) {
}
// ...
};
该类包含抽象方法并不会阻止它具有用于初始化其成员变量的构造函数。
答案 1 :(得分:0)
AbstractClass::isActive = false;
指的是(不存在的)静态类成员。如果存在,它将作为整个类的单个共享实例存在,并且事实上你将像你一样初始化它。
但是你有一个实例变量,这意味着该类的每个实例都有自己的副本。要初始化那个,你会做什么呢?如同sth所示,在初始化列表中,在类的ctor中初始化它,无论是在ctor体中还是更好。