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

error C2259: '<someclass>' : cannot instantiate abstract class

本文关键字:实例化 抽象类 lt C2259 错误 someclass gt      更新时间:2023-10-16

我得到这个编译器错误,而试图编译一个vs6 vc++代码。<someclass>不是一个抽象类。当单击错误时,指针指向函数

第一行的列表系统文件。
void resize(size_type _Newsize, _Ty _Val)       
{     
     if (_Mysize < _Newsize)  
         _Insert_n(end(), _Newsize - _Mysize, _Val);  
     else  
     while (_Newsize < _Mysize)  
        pop_back();  
}

奇怪。任何解决方案。类,

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

如果一个类有纯虚成员,则不能创建该类的实例。这些纯虚成员是在该类中还是在基类中声明的。除非类的所有成员都存在,否则不能创建类。具有纯虚成员(无论是在类中声明还是在基类中声明)的类称为抽象类。

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

可以在std::vector中放置指向抽象类的指针。但只有指针,而不是对象本身。因此,您需要使用new来分配对象,但是由于该类是抽象的,因此根本无法创建它们。因此,您需要派生一个实现纯虚方法的新类。然后你就可以创建这个类并把它放到std::vector<someclass*>