gpt4 book ai didi

c++ - 无法实例化抽象类,但我有

转载 作者:行者123 更新时间:2023-11-28 03:04:16 24 4
gpt4 key购买 nike

第一次来电。我是 C++ 的新手,并且已经尝试了几个小时来解决这个问题。很抱歉问一个似乎很常见的问题。我一生都找不到答案。

我在 visual studio 中遇到以下编译错误:

error C2259: 'Node' : cannot instantiate abstract class
due to following members:
'void Node::printValue(void)' : is abstract.

据我了解,这意味着我创建的纯虚函数尚未在子类中实现。从我所看到的一切来看,它已在 intNode 子节点中实现。我在这里做错了什么?代码如下。提前致谢!

在 Node.h 中:

class Node {            
protected:
Node* nextNodePtr;

public:
Node();
Node* getNextNodePtr(void);
void setNextNodePtr(Node*);
~Node();
virtual void printValue() = 0;
};

class intNode : public Node {
int nodeInteger;
public:
virtual void printValue()
{
cout << "***" << endl;
}

intNode(int i)
{
nodeInteger = i;
}
};

在 Node.cpp 中:

void intNode::printValue() 
{
cout << "It's an int: " << nodeInteger << endl;
}

void Node::printValue()
{
cout << "This is just here fix compile error" << nodeInteger << endl;
}

编辑...抱歉,我忘了添加这一点。错误指向main中的这个部分

int main()
{
Node* firstNode = new Node; <---- this line is where the error points
firstNode = new intNode;
intNode* intNode = new intNode;

最佳答案

您不能创建抽象类的实例。消息是这么说的,你知道的,所以不要这样做。

int main()
{
Node* firstNode; // do not create Node instance here.
// It's a compile time error and even if not,
// it would have been a memory leak.

firstNode = new intNode;
intNode* intNode = new intNode;

关于c++ - 无法实例化抽象类,但我有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20088655/

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