前置模板类声明

由于某些原因不方便在头文件中直接引入另一个模板类的头文件,但声明变量是需要用到该模板类型,这时候就要用到模板类的前置声明了;

声明方式如下:

namespace xx {

template<typename T>

class CBar;

}

使用方式:

xx::CBar<int> bar_;

但此时可能会报编译错误:

error: field 'bar_' has incomplete type

原因:

此时CBar仅仅是一个前置声明,系统不知道为该类型分配多大空间;正确 的使用方式,是定义一个指针xx::CBar<int> bar_ptr_;

问题解决

猜你喜欢

转载自www.cnblogs.com/guoliushui/p/12011901.html
今日推荐