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文件里应该不成问题了。
// 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++模板应用——模板定义和实现分离
- c++primer第二章“c++定义了几种基本类型,还提供了可用于自定义数据类型的机制,此外,我们还能修改已有的类型以形成复合类型”
- 读书笔记 effective c++ Item 46 如果想进行类型转换,在模板内部定义非成员函数
- C++类模板定义与实现的分离—学习C++数据抽象和问题求解
- c++数据类型(整型/浮点型/字符串/数组/引用/结构体(内存对齐)/类(虚函数))定义、所占字节数、最大最小值
- C++中函数定义返回类型和内部实现返回类型不同的原因
- C++模板应用——让模板定义和实现分离的方法
- C++模板应用——让模板定义和实现分离的方法
- C++中函数定义返回类型和内部实现返回类型不同的原因
- C++模板应用——让模板定义和实现分离的方法
- PL/SQL定义复合数据类型
- C++复合数据类型
- C++文本查询程序 定义类管理数据 用引用共享数据 不用智能指针 C++Primer练习12.27
- C++文本查询程序 定义类管理数据 用引用共享数据 不用智能指针 C++Primer练习12.27
- Erlang数据类型的内部实现
- 数据结构(2)单链表 c++ 模板实现
- 数据结构(5) 链栈 c++ 模板实现
- Binder系统_c++实现内部机制数据传输
- C++内部数据类型
- C++复合类型:指针和引用