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

时间:2011-08-13 11:21:09

标签: c++ visual-studio-2008 compiler-errors

尝试编译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();  
}

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

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

1 个答案:

答案 0 :(得分:8)

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

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

您可以将指针放在std::vector中的抽象类中。但只有指针,而不是对象本身。因此,您需要使用std::vector分配对象,但由于该类是抽象的,因此根本无法创建它们。因此,您需要派生一个实现纯虚方法的新类。然后,您将能够创建该类并将其放入new