子类在继承父类时需明确父类的模板数据类型
template<class T>
class Base {
public:
Base()
{
std::cout << __func__ << "() 构造函数\n";
}
~Base()
{
std::cout << __func__ << "() 析构函数\n";
}
private:
T mMember;
};
template<class T1, class T2>
class Object : public Base<T2> {
public:
Object ()
{
std::cout << __func__ << "() 构造函数\n";
}
~Object ()
{
std::cout << __func__ << "() 析构函数\n";
}
void getVar()
{
std::cout << __func__ << "() "
<< this->mMember
<< std::endl;
}
private:
T1 mMember;
};
void test01()
{
Object<int> object;
object.mMember = 10;
object.getVar();
}
int main()
{
test01();
return 0;
}
类模板分文件编写注意事项
由于类模板创建时机问题,故分开写会导致编译时报链接错误
解决方法
使用时include cpp文件或者把声明和实现放在一个文件中,写成hpp