读书人

问一个模版的有关问题求指导

发布时间: 2013-01-04 10:04:18 作者: rapoo

问一个模版的问题,求指导


template <class T>
struct CLinkerT
{
T *pValue;
CLinkerT *pNext;//此处不写成CLinkerT<T>没有问题,编译通过
};
template <class T>
class CTemplate
{
CLinkerT *m_pNode;//此处不写成CLinkerT<T>没有问题,编译通过
CLinkerT *GetNode();//此处不写成CLinkerT<T>没有问题,编译通过
};

//为什么此处函数的返回值写成CLinkerT时编译不通过
//“use of class template requires template argument list”
template <class T>
CLinkerT<T> *CTemplate<T>::GetNode()
{
return m_pNode;
}


这个<T>具体起到一个什么作用?
[解决办法]
返回的类型是一个需要模板参数的模板结构体
需要指定模板参数
[解决办法]
引用:
那为什么CLinkerT *GetNode();函数申明的时候不需要指定模板参数


VS吧?

按ISO标准都要写的,只是编译器做了扩展,但有些地方似乎又没扩展

还是按标准都写上吧
[解决办法]
template <class T>
struct CLinkerT
{
T *pValue;
CLinkerT *pNext;//此处不写成CLinkerT<T>没有问题,编译通过
};

这里可以不写的
[解决办法]
都写上,好看点。

引用:
引用:
那为什么CLinkerT *GetNode();函数申明的时候不需要指定模板参数

VS吧?

按ISO标准都要写的,只是编译器做了扩展,但有些地方似乎又没扩展

还是按标准都写上吧

++

读书人网 >C++

热点推荐