gpt4 book ai didi

c++ - C++中的非法成员初始化

转载 作者:太空狗 更新时间:2023-10-29 23:31:03 25 4
gpt4 key购买 nike

class ZooAnimal {
public:
virtual void draw();
int resolveType() {return myType;}
protected:
int myType;
};

class Bear : public ZooAnimal {
public:
Bear (const char *name) : myName(name), myType(1){}
void draw(){ };
private:
std::string myName;
};

void main()
{

}

当我编译上面的代码时,我遇到了以下错误

error C2614: 'Bear' : illegal member initialization: 'myType' is not a base or member

为什么我会收到上述错误,因为我们可以从派生类访问 protected 成员?

最佳答案

您不能在派生类初始化列表中初始化基类成员。

您需要为基类提供一个构造函数:

class ZooAnimal {
public:

ZooAnimal(int type) : myType(type) {}

virtual void draw();
int resolveType() {return myType;}
protected:
int myType;
};

并从派生类中调用它:

class Bear : public ZooAnimal {
public:
//here//
Bear (const char *name) : ZooAnimal(1), myName(name) {}

void draw(){ };
private:
std::string myName;
};

关于c++ - C++中的非法成员初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10294731/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com