首页 > 解决方案 > 带有模板的链接器“错误 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 中引用

我知道有一些类似的问题,但没有一个能解决我的问题......

有人可以帮忙吗?

标签: c++linkerlinker-errors

解决方案


推荐阅读