类模板分文件编写:错误 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,因此出现链接问题。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部