C++:类模板分文件问题
Posted studying~
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++:类模板分文件问题相关的知识,希望对你有一定的参考价值。
类模板成员函数的创建时机
要弄清楚类模板之所以.h文件和.c文件写在一起,首先要知道类模板成员函数的创建时机
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <string>
using namespace std;
class A
{
public:
void showA()
{
cout << "showA" << endl;
}
};
class B
{
public:
void showB()
{
cout << "showB" << endl;
}
};
template <class T>
class C
{
public:
void foo1()
{
obj.showA();
}
void foo2();
/*{
obj.showB();
}*/
T obj;
};
void test01()
{
C<A> p;
p.foo1();//调用foo1
//p.foo2();
}
int main()
{
test01();
return 0;
}
由此可知:类模板成员函数的创建时机是在调用时,没有调用,编译器不会创建这个函数,只有函数的声明
类模板的分文件问题
注意: 类模板的分文件,必须将类成员函数的定义和声明写到一个文件,如果将写在不同文件,由于每个.cpp文件是单独编译的,当main函数调用模板类的成员函数时,无法找到成员函数的定义进行创建,因此编译会出错
以上是关于C++:类模板分文件问题的主要内容,如果未能解决你的问题,请参考以下文章