C++ 创建包含子类的类向量
我有一个向量,我想在其中存储子类。但我面临的问题是,它给了我一个错误。 我将其视为参考,但现在我遇到了以下错误: 错误:“Subclass::Subclass”(声明于…)不可访问 我的代码如下:C++ 创建包含子类的类向量,c++,visual-studio,subclass,declaration,stdvector,C++,Visual Studio,Subclass,Declaration,Stdvector,我有一个向量,我想在其中存储子类。但我面临的问题是,它给了我一个错误。 我将其视为参考,但现在我遇到了以下错误: 错误:“Subclass::Subclass”(声明于…)不可访问 我的代码如下: class SuperClass { public: SuperClass() {} ~SuperClass() {} }; class SubClass : public SuperClass { SubClass() {} //there is no .cpp ~S
class SuperClass
{
public:
SuperClass() {}
~SuperClass() {}
};
class SubClass : public SuperClass
{
SubClass() {} //there is no .cpp
~SubClass() {}
};
int main()
{
std::vector<SuperClass*> superClass;
superClass.push_back(new SubClass());
return 0;
}
类超类
{
公众:
超类(){}
~SuperClass(){}
};
类子类:公共超类
{
子类(){}//没有.cpp
~SubClass(){}
};
int main()
{
向量超类;
push_back(新的子类());
返回0;
}
类的默认访问类型为私有
。因此,子类
的构造函数和析构函数都是私有的
。在前面添加public
访问说明符
class Subclass : public SuperClass{
// Add this
public:
SubClass() {} //there is no .cpp
~SubClass() {}
};
请提供一个完整但最少的示例,供读者尝试。也就是说,编译器的诊断“无法访问”说明了一切。构造函数不可访问,因为默认情况下,
类
的成员是私有的
。因此,要么使用struct
关键字,要么在构造函数定义之前添加public:
access说明符,或者,取消绑定,使classProgram
afriend
。这样做有效。很好,我只是忘记了访问类型。