LNK2019使用未模板类
LNK2019 Using untemplated classes
本文关键字:LNK2019 更新时间:2023-10-16
当使用引用其中其他类的类时,我会遇到链接器错误。
1>main.obj : error LNK2019: unresolved external symbol "public: __thiscall MovePattern::~MovePattern(void)" (??1MovePattern@@QAE@XZ) referenced in function "public: __thiscall Enemy::Enemy(int,int,class MovePattern,char)" (??0Enemy@@QAE@HHVMovePattern@@D@Z)
1>main.obj : error LNK2019: unresolved external symbol "public: __thiscall MovePattern::MovePattern(void)" (??0MovePattern@@QAE@XZ) referenced in function "public: __thiscall Enemy::Enemy(int,int,class MovePattern,char)" (??0Enemy@@QAE@HHVMovePattern@@D@Z)
它来自于引用这个类:
class MovePattern{
public:
char next;
MovePattern();
MovePattern(const MovePattern &old){
p = old.p;
pi = 0;
next = p[0];
n = p[0];
}
MovePattern(char *pattern){
p = pattern;
pi = 0;
next = p[0];
n = p[0];
}
~MovePattern();
此类:
class Enemy{
public:
Enemy(int a, int b, MovePattern p,char c)
x = b;
y = a;
MovePattern pattern (p);
symbol = c;
它们当前位于同一.cpp文件中,MovePattern位于Enemy之上。
我不确定这里发生了什么
Visual C++2010学习版有一个空白控制台项目,我还没有发现任何类似于我的问题的东西,如果有任何帮助,我们将不胜感激。
您还没有定义默认的构造函数和析构函数,如下所示:
MovePattern(); //default constructor
~MovePattern(); //destructor
如果你声明它们,你就必须定义它们。声明必须有定义。否则,当隐式或显式使用时,您将得到链接器错误。
此链接器错误是因为您尚未编译/链接包含默认构造函数(MovePattern::MovePattern()
)和析构函数(MovePattern::~MovePattern()
)定义的文件/代码。
您应该在class MovePattern
中声明它们inline
(如果您在其中没有做太多工作):
class MovePattern {
public:
MovePattern () {}
~MovePattern () {}
};
或者在一个单独的.cpp文件中定义它们,并编译/链接该文件和您的源代码:
// MovePattern.cpp
MovePattern::MovePattern ()
{
//...
}
MovePattern::~MovePattern ()
{
//...
}
只需删除这两个声明:
MovePattern();
~MovePattern();
您显然不需要这些——因为您在一个cpp文件中定义了所有内容。
相关文章:
- 类C++中的函数问题(LNK2019和LNK1120错误)
- CppSQLite 抛出"LNK2019: unresolved external symbol"错误
- Visual Studio中的wxwidgets应用程序给出错误"LNK2019 unresolved external symbol"
- 什么会导致LNK2019 VisualStudio中的错误?
- 构建 Tensorflow 调试时出现错误LNK2019
- LNK2019 在文件中调用静态成员的方法时出错.cpp
- 错误LNK2019未解析的外部符号"public: __thiscall SLinkList<char>::SLinkList<char>(void)"
- Qt C++LNK2019:使用QNetworkAccessManager未解析的外部符号
- 链接CPP文件进行测试时发生LNK2019错误
- LNK2019:C++/CLI 中未解析的外部符号
- 函数 LNK2019 "int __cdecl __scrt_common_main_seh(void)" 中引用的未解析外部符号主错误 (?__scrt_common_main_seh@@YAHXZ
- 皮克斯美元LNK2019:未解析的外部交易品种
- LNK2019未解析的外部符号"公共:__thiscall
- 32位到64位:LNK2019错误,如何检索相关信息
- Google Test:错误 LNK2019:使用 Visual Studio 2017 与 CMake 进行未解析的外
- LNK2019 - 在VS2017中使用Freeling
- 在结构函数之间传递文件路径 C++ 编辑:修复LNK2019错误
- LNK2019和LNK1120错误,未解析的外部和未解析的符号
- MAPI 链接静态库 (LNK2019: 未解析的外部符号)
- Azure IOT 错误LNK2019:函数IoTHubClient_LL_UploadToBlob_step1and2