类模板分文件编写:错误 LNK2019 无法解析的外部符号 “public: __cdecl Person
错误:

代码:

Person.h
#pragma once
#include
using namespace std;
template<class T1,class T2>
class Person
{
private:T1 mName;T2 mAge;
public:Person(T1 name, T2 age);void Show();
};
Person.cpp
#include "Person.h"
template<class T1,class T2>
Person<T1, T2>::Person(T1 name, T2 age) {this->mName = name;this->mAge = age;
}
template<class T1,class T2>
void Person<T1, T2>::Show() {cout << "Nmae=" << this->mName << ",Age=" << this->mAge << endl;
}
main.cpp
#include "Person.h"
void main(void) {Person<string,int> p("aaa", 23);p.Show();
}
解决方案:
只需要改变main.cpp头文件。
#include "Person.h"
改为
#include "Person.cpp"
修改后的main.cpp
#include "Person.cpp"
void main(void) {Person<string,int> p("aaa", 23);p.Show();
}
结果:

原因:与以下有关。
1.编译器问题;
2.函数模板调用;
因为程序没有生成具体的模板函数Person
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
