gpt4 book ai didi

c++ - 获取 "error LNK2019: unresolved external symbol ... "

转载 作者:太空宇宙 更新时间:2023-11-04 11:24:55 25 4
gpt4 key购买 nike

我正在尝试开始使用 C++,但我一直收到此错误。我知道我的代码的哪些部分正在生成它,但我认为至少这些部分中的一个不应该生成它们。

我正在创建一个名为 Text 的类,其功能类似于 std::string 类,只是为了试验并更好地理解值语义.

无论如何,这些是我的文件:

文本.h:

#ifndef TEXT
#define TEXT

class Text {
public:
Text(const char *str);
Text(const Text& other);
void operator=(const Text& other);
~Text();

private:
int size;
char* cptr;
};

#endif

文本.cpp:

#include "Text.h"
#include <cstring>
#include <iostream>
using namespace std;

Text::Text(const char* str) {
size = strlen(str) + 1;
cptr = new char[size];
strcpy(cptr, str);
}

Text::Text(const Text& other) {
size = other.size;
cptr = new char[size];
strcpy(cptr, str);
}

void Text::operator=(const Text& other){
delete [] cptr;
size = other.size;
cptr = new char[size];
strcpy(cptr, other.ctpr);
}

Text::~Text() {
delete [] cptr;
}

主要.cpp:

#include <iostream>
#include "Text.h"
using namespace std;

Text funk(Text t) {
// ...
return t;
}

int main() {
Text name("Mark");
Text name2("Knopfler");
name = funk(name);

name = name2;

return 0;
}

那么导致错误的是函数 funk,以及 main 函数中的前两行。我明白为什么它在主函数的前两行提示,因为没有名为“name”或“name2”的函数。但是我想做的是在一行中声明和初始化一个对象(我是 Java 老手 :p),这在 C++ 中甚至可能吗?我在网上找不到任何表明这一点的信息。

有趣的是,这段代码或多或少是从我的讲师在演讲中执行得很好的一些代码中复制而来的。而且他当然也没有声明任何名为“name”和“name2”的函数。对此有什么合理的解释吗?

但为什么函数 funk 也会生成此错误?我所做的只是返回我发送的对象的拷贝。

提前致谢!

编辑:这是完整的错误信息。他们有五个。 “SecondApplication”是我的项目的名称。

Error 1 error LNK2019: unresolved external symbol "public: __thiscall Text::Text(char const *)" (??0Text@@QAE@PBD@Z) referenced in function _main C:\Users\XXX\Documents\Visual Studio 2013\Projects\SecondApplication\SecondApplication.obj SecondApplication


Error 2 error LNK2019: unresolved external symbol "public: __thiscall Text::Text(class Text const &)" (??0Text@@QAE@ABV0@@Z) referenced in function "class Text __cdecl funk(class Text)" (?funk@@YA?AVText@@V1@@Z) C:\Users\XXX\Documents\Visual Studio 2013\Projects\SecondApplication\SecondApplication.obj SecondApplication


Error 3 error LNK2019: unresolved external symbol "public: void __thiscall Text::operator=(class Text const &)" (??4Text@@QAEXABV0@@Z) referenced in function _main C:\Users\XXX\Documents\Visual Studio 2013\Projects\SecondApplication\SecondApplication.obj SecondApplication


Error 4 error LNK2019: unresolved external symbol "public: __thiscall Text::~Text(void)" (??1Text@@QAE@XZ) referenced in function "class Text __cdecl funk(class Text)" (?funk@@YA?AVText@@V1@@Z) C:\Users\XXX\Documents\Visual Studio 2013\Projects\SecondApplication\SecondApplication.obj SecondApplication


Error 5 error LNK1120: 4 unresolved externals C:\Users\XXX\Documents\Visual Studio 2013\Projects\SecondApplication\Debug\SecondApplication.exe 1 1 SecondApplication

最佳答案

例如,如果您忘记将“Text.cpp”添加到您的项目,因此它不会被编译和链接,您将看到您看到的链接错误(不是编译错误)。

代码中有两个错误 - 一个在复制构造函数中,一个在赋值运算符中。

由于编译器没有报错这两个错误,我怀疑你忘记将文件添加到项目中。

关于c++ - 获取 "error LNK2019: unresolved external symbol ... ",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27036223/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com