所有的类模板函数写在类的外部,在一个cpp中

总结:
在同一个cpp 文件中把模板类的成员函数放到类的外部,需要注意以下几点

函数前声明 template <类型形式参数表>
类的成员函数前的类限定域说明必须要带上虚拟参数列表
返回的变量是模板类的对象时必须带上虚拟参数列表
成员函数参数中出现模板类的对象时必须带上虚拟参数列表
成员函数内部没有限定

// p15-5-所有的类模板函数写在类的外部,在一个cpp中.cpp : 此文件包含 “main” 函数。程序执行将在此处开始并结束。
//

#include

using namespace std;

template
class A
{
public:
A(T t = 0);
T& getT();
A operator+(const A& other);
void print();
private:
T t;
};

int main()
{

A a(666), b(888);
A tmp = a + b;
tmp.print();

}

// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单
// 调试程序: F5 或调试 >“开始调试”菜单

// 入门使用技巧:
// 1. 使用解决方案资源管理器窗口添加/管理文件
// 2. 使用团队资源管理器窗口连接到源代码管理
// 3. 使用输出窗口查看生成输出和其他消息
// 4. 使用错误列表窗口查看错误
// 5. 转到“项目”>“添加新项”以创建新的代码文件,或转到“项目”>“添加现有项”以将现有代码文件添加到项目
// 6. 将来,若要再次打开此项目,请转到“文件”>“打开”>“项目”并选择 .sln 文件

template
A::A(T t)
{
this->t = t;
}

template
T& A::getT()
{
// TODO: 在此处插入 return 语句
return t;
}

template
A A::operator+(const A& other)
{
A tmp;
tmp.t = this->t + other.t;
return tmp;
}

template
void A::print()
{
cout << this->t << endl;
}

你可能感兴趣的:(所有的类模板函数写在类的外部,在一个cpp中)