错误C2259:'<someclass>':无法实例化抽象类

Ven*_*mar 2 c++ compiler-errors visual-studio-2008

尝试编译VS 6 VC++代码时出现此编译器错误.这<someclass>不是一个抽象的类.当点击错误时,指针指向函数第一行的列表系统文件

void resize(size_type _Newsize, _Ty _Val)       
{     
     if (_Mysize < _Newsize)  
         _Insert_n(end(), _Newsize - _Mysize, _Val);  
     else  
     while (_Newsize < _Mysize)  
        pop_back();  
}
Run Code Online (Sandbox Code Playgroud)

奇怪.任何解决方案 上课,

class SomeClass: public parentObject
{

  public:
    SomeClass() {}
    SomeClass(const someotherclass& p, double uu, double vv)
        { z= p; u = uu; v = vv; }
protected:
    double      u, v;       
     someotherclass z;  
};
Run Code Online (Sandbox Code Playgroud)

Nic*_*las 8

如果类具有任何纯虚拟成员,则无法创建该类的实例.是否在该类或基类中声明了这些纯虚拟成员.除非存在所有成员,否则无法创建类.具有纯虚拟成员(无论是在类中还是在基类中声明)的类称为抽象类.

因此,如果从具有纯虚拟成员的基类继承,则必须在派生类中实现这些,如果要创建该类的实例(例如将它们放入a中std::vector).

你可以将指针放在一个抽象类中std::vector.但只有指针,而不是对象本身.所以你需要分配你的对象new,但由于这个类是抽象的,你根本无法创建它们.因此,您需要派生一个实现纯虚方法的新类.然后你就可以创建那个课程并把它放在你的课堂上std::vector<someclass*>.