首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2013-01-04 
问一个模版的问题,求指导template class Tstruct CLinkerT{T *pValueCLinkerT *pNext//此处不写成CLin

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


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标准都要写的,只是编译器做了扩展,但有些地方似乎又没扩展

还是按标准都写上吧

++

热点排行