c++ - 带有模板的链接器“错误 LNK2019:公共:__thiscall”
问题描述
我是 C++ 新手,我不知道如何解决此链接器错误...
我的TagBase.h
文件:
#pragma once
#ifndef RRS_System
#include <string>
#endif // RRS_System
namespace Ladder{
template<class T>
class TagBase
{
protected:
std::string name;
T value;
public:
TagBase<T>(std::string tagName);
TagBase<T>(std::string tagName, T startValue);
virtual std::string ToString();
std::string GetName();
T GetValue();
T* GetValuePtr();
};
}
我的TagBase.cpp
文件:
#include "TagBase.h"
template<typename T>
Ladder::TagBase<T>::TagBase(std::string tagName) : name{tagName}
{
}
template<typename T>
Ladder::TagBase<T>::TagBase(std::string tagName, T startValue) : name{ tagName }, value{ startValue }
{
}
template<typename T>
std::string Ladder::TagBase<T>::ToString()
{
return "Nome: " + TagBase<T>::name;
}
template<typename T>
std::string Ladder::TagBase<T>::GetName()
{
return TagBase<T>::name;
}
template<typename T>
T Ladder::TagBase<T>::GetValue()
{
return TagBase<T>::value;
}
template<typename T>
T* Ladder::TagBase<T>::GetValuePtr()
{
return &value;
}
我的main.cpp
文件:
#define RRS_System
#ifdef RRS_System
#include <iostream>
#include <string>
#include "TagBase.h"
#endif // RRS_System
#ifdef RRS_System
int main() {
Ladder::TagBase<int> t1 = Ladder::TagBase<int>::TagBase("ols");
std::cout << t1.ToString();
return 0;
}
#endif // RRS_System
我收到此错误:
1> MainTeste.obj : 错误 LNK2019: 无法解析的外部符号“public: __thiscall Ladder::TagBase::TagBase(class std::basic_string<char,struct std::char_traits,class std::allocator >)” (??0 ?$TagBase@H@Ladder@@QAE@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) 在函数 _main 中引用
1> MainTeste.obj : 错误 LNK2019: 无法解析的外部符号“public: virtual class std::basic_string<char,struct std::char_traits,class std::allocator > __thiscall Ladder::TagBase::ToString(void)” (? ToString@?$TagBase@H@Ladder@@UAE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) 在函数 _main 中引用
我知道有一些类似的问题,但没有一个能解决我的问题......
有人可以帮忙吗?
解决方案
推荐阅读
- next.js - 如何在 Strapi 组件中使集合类型的子级可用?
- javascript - React useState 导致 if-else 无法正常工作
- spring - EnumerablePropertySource 类的 getPropertyNames() 方法,从 spring-boot 2.1.9.RELEASE 升级到 2.4.2 后没有被调用
- javascript - 排版文本没有换行
- python - 如何给所有线程一个新变量?
- mysql - uuid v4 vs v6(有序),哪个对 MySQL 更有效?
- bots - 当安装在不同的工作区中时,我的 slack 机器人无法正常工作
- r - 如何按 id 分组并显示部分总数?
- reactjs - react-native-image-crop-picker 错误显示
- python - Discord.py 如何在代码中保存和显示消息?