C++ C+中的非法成员初始化+;

C++ C+中的非法成员初始化+;,c++,C++,当我编译上述代码时,我发现了以下错误 错误C2614:“Bear”:非法的成员初始化:“myType”不是基或成员 为什么我会出现上述错误,因为我们可以从派生的CALS访问受保护的成员?您不能在派生类初始值设定项列表中初始化基类成员 您需要为基类提供一个构造函数: class ZooAnimal { public: virtual void draw(); int resolveType() {return myType;} protected: int myType; }; class Be

当我编译上述代码时,我发现了以下错误

错误C2614:“Bear”:非法的成员初始化:“myType”不是基或成员


为什么我会出现上述错误,因为我们可以从派生的CALS访问受保护的成员?

您不能在派生类初始值设定项列表中初始化基类成员

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

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()
{

}
并从派生类调用它:

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;
};