尝试编译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;
};
答案 0 :(得分:8)
如果类具有任何纯虚拟成员,则无法创建该类的实例。是否在该类或基类中声明了这些纯虚拟成员。除非存在所有成员,否则无法创建类。具有纯虚拟成员(无论是在类中还是在基类中声明)的类称为抽象类。
因此,如果从具有纯虚拟成员的基类继承,则必须在派生类中实现这些,如果要创建该类的实例(例如将它们放在{{ 1}})。
您可以将指针放在std::vector
中的抽象类中。但只有指针,而不是对象本身。因此,您需要使用std::vector
分配对象,但由于该类是抽象的,因此根本无法创建它们。因此,您需要派生一个实现纯虚方法的新类。然后,您将能够创建该类并将其放入new
。