前置模板类声明

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

声明方式如下:

namespace xx {

template<typename T>

class CBar;

}

 

使用方式:

xx::CBar<int> bar_;

 

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

error: field 'bar_' has incomplete type

 

原因:

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

问题解决

posted @ 2019-12-09 16:41  郭流水  阅读(2008)  评论(0编辑  收藏  举报