2014-10-16 58 views
1

第一次问这么温柔。返回类型的线外定义与声明中的不同

我遇到了返回函数的自定义类型的问题。更具体地说,我有一个链表,并且我正在编写一个遍历列表末尾并返回指向该节点的指针的函数。不幸的是,我得到一个讨厌的错误:

头文件中包含的“MySpace”的范围内“的MySpace返回类型外的线定义:: CDAL :: tailNode从在声明不同”命名空间和模板类CDAL

private: 

struct Node 
{....}; 

函数头

Node* tailNode(); 

,并在.cpp

​​

我试过使用struct,因为有人提到了非typedef声明,您有时会需要它,并且我不再收到未知类型的错误,而是收到了此代码。

在此先感谢您的帮助。

+0

除了我的回答,除非你真的知道你在做什么,否则你不应该在.cpp文件中定义模板。他们在使用时会给出未定义的参考。相反,只需在.h文件中定义该函数即可。 – 0x499602D2 2014-10-16 22:43:22

回答

2

Node是内mySpace::CDAL<T>声明所以它的名称在定义是合格的:也没有必要

template <typename T> 
struct typename mySpace::CDAL<T>::Node* mySpace::CDAL<T>::tailNode() 
{...} 

struct。把它拿出来不会有什么区别。

+0

@LightnessRacesinOrbit为真。 – 0x499602D2 2014-10-17 00:25:22