gpt4 book ai didi

c++ - 错误 C2259 : '' : cannot instantiate abstract class

转载 作者:搜寻专家 更新时间:2023-10-30 23:48:20 25 4
gpt4 key购买 nike

我在尝试编译 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;
};

最佳答案

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

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

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

关于c++ - 错误 C2259 : '<someclass>' : cannot instantiate abstract class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7050121/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com