您的位置:首页 > 编程语言 > C语言/C++

C++模板应用——在类模板实现中引用其内部定义的复合数据类型

2007-06-09 00:50 846 查看
假设有以下类模板定义:


// Test.h


template<class T>


class Test




...{


public:


struct TS




...{


int j ;


} ;


public:


TS* test1() ;


} ;

注意,模板Test内还包含了类TS的定义。

那么,实现文件特别是test1函数的定义应该怎么写才能保证正确呢?经过向高人请教,终于获得答案:


// Test.cpp


template<class T>


typename Test<T>::TS* Test<T>::test1()




...{


return NULL ;


}

关键问题在于在通常情况下,类模板内含的复合类型在实现文件里引用时总不能被识别,加上typename关键字的目的就是要告诉编译器,后面跟着的是一个数据类型,让编译器加以区别对待。

有了今天跟昨天的技巧,把类模板分离在头文件和cpp文件里应该不成问题了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ 编译器 class struct null