第一次问那么温柔。
我在为函数返回自定义类型时遇到问题。更具体地说,我有一个链接列表,并且我正在编写一个遍历列表末尾并返回指向该节点的指针的函数。不幸的是,我遇到了一个讨厌的错误:
“mySpace::CDAL::tailNode的返回类型离线定义与声明中的定义不同”
头文件包含在“mySpace”命名空间和模板类CDAL中
private:
struct Node
{....};
函数头
Node* tailNode();
并在.cpp中
template <typename T>
struct Node* mySpace::CDAL<T>::tailNode()
{...}
我尝试使用struct是因为有人为非typedef声明提到了您有时会需要它,而我不再收到未知的类型错误,而是收到了该错误。
在此先感谢您的帮助。
最佳答案
Node
在mySpace::CDAL<T>
中声明,因此其名称必须在定义中限定:
template <typename T>
struct typename mySpace::CDAL<T>::Node* mySpace::CDAL<T>::tailNode()
{...}
也不需要
struct
。将其取出不会有任何影响。关于c++ - 返回类型的脱机定义与声明中的不同,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26415054/