C++ 更改函数的位置';的行为是否导致错误?
我有以下类声明(我已尝试删除尽可能多的多余代码): 这没有错误。然而,一旦我在类之外定义函数“findNode”,我就会得到一个错误;代码如下:C++ 更改函数的位置';的行为是否导致错误?,c++,function,debugging,object,C++,Function,Debugging,Object,我有以下类声明(我已尝试删除尽可能多的多余代码): 这没有错误。然而,一旦我在类之外定义函数“findNode”,我就会得到一个错误;代码如下: class List { public: struct Node { int value; }; Node * findNode(unsigned int); }; Node * List::findNode(unsigned int index) { retur
class List {
public:
struct Node {
int value;
};
Node * findNode(unsigned int);
};
Node * List::findNode(unsigned int index) {
return new Node;
}
现在,在运行代码时,我得到一个错误,上面写着“LinkedList.cpp:9:1:error:'Node'没有命名类型”
如果您能帮我确定问题,我将不胜感激。直到编译器遇到
列表::
它不知道您所说的节点是列表的成员。将定义更改为:
List::Node * List::findNode(unsigned int index) {
return new Node;
}
函数内部的“裸”节点是可以的,因为此时编译器知道该函数是列表的成员。直到编译器遇到列表::
它不知道您所说的节点是列表的成员。将定义更改为:
List::Node * List::findNode(unsigned int index) {
return new Node;
}
函数内部的“裸”节点
没有问题,因为此时编译器知道该函数是列表的成员。如果是头文件,则需要对类外的定义使用内联
。或者,当两个源文件包含相同的头文件时,就会出现链接错误。如果是头文件,则需要在类外的定义上使用inline
。或者,当两个源文件包含相同的头文件时,就会出现链接错误。@PawełStawarz,否,请阅读答案的最后一句:“函数中的“裸”节点
,因为此时编译器知道该函数是列表的成员。”也就是说,在List::findNode
名称在List
@PawełStawarz范围内查找之后,不,阅读答案的最后一句话:“函数中的“裸”节点
没有问题,因为此时编译器知道该函数是List的成员。”即在List::findNode
之后,在List
的范围内查找名称。