【发布时间】:2020-11-21 17:33:28
【问题描述】:
此代码给出错误“没有声明匹配 Node* List::getNewNode(int)”
class List
{
private:
struct Node {
int data;
Node* next;
};
private:
Node* getNewNode(int data);
};
Node* List::getNewNode(int data)
{
Node* newNode = new Node;
newNode->data = data;
newNode->next = NULL;
return newNode;
}
但是这个函数的相同定义在类内部起作用
class List
{
private:
struct Node {
int data;
Node* next;
} *head = NULL;
private:
Node* getNewNode(int data)
{
Node* newNode = new Node;
newNode->data = data;
newNode->next = NULL;
return newNode;
}
};
在类声明的括号内定义函数和定义函数有什么区别吗? 使用范围解析在类括号之外定义它或返回类型是问题? 编译器:minGW x64
【问题讨论】:
-
在类声明之外,您必须将类型引用为
List::Node。见godbolt.org/z/cxebdb