gpt4 book ai didi

c++ - 创建对象时未解析的外部符号

转载 作者:行者123 更新时间:2023-11-28 00:39:32 25 4
gpt4 key购买 nike

我正在尝试运行一个访问 3 个不同类的 main.cpp。出于某种原因,我收到 Unresolved external symbol 错误。从我在网上看到的情况来看,它显然是某处的链接错误,但我找不到它。我在下面列出了错误,但其中有很多信息,我很难弄清楚它的确切含义。

错误:main.obj:-1: error: LNK2001: 未解析的外部符号 "public: __thiscall AtpReader::AtpReader(class std::basic_string,class std::allocator >)"(??0AtpReader@@QAE @V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)

我的代码是:

主要.cpp:

#include <iostream>
#include "atlasobject.h"
#include "atp.h"
#include "atpreader.h"
using namespace std;
int main()
{
AtpReader reader("E:/doc.txt");
return 0;
}

AtpReader.h:

#ifndef ATPREADER_H
#define ATPREADER_H
#include "atp.h"

class AtpReader
{
public:
AtpReader();
AtpReader(string filename);

void atpReadHeader();
void atpRead();
string decryptLine(string line);

ATP readerATP;

private:
string file;
};
#endif // ATPREADER_H

atp.h:

#ifndef ATP_H
#define ATP_H
#include "atlasobject.h"
#include "vector"

struct Image{
string Dim;
string Vox;
string Ori;
char* data;
};

class ATP
{
public:
ATP();
vector<AtlasObject> listOfMaps;

private:
Image referenceImage;
};
#endif // ATP_H

和AtlasObject.h:

#ifndef ATLASOBJECT_H
#define ATLASOBJECT_H
#include <string>

using namespace std;
class AtlasObject{

public:
//virtual void create();
AtlasObject();

void set_uid(string id);
void set_label(string l);
void set_offset(string o);
void set_mapInfo(string info);
void set_data(char* inData);
void set_isEncrypted(int encrypted);

string get_uid();
string get_label();
string get_offset();
string get_mapInfo();
char* get_data();
int get_isEncrypted();

protected:
string uid;
string label;
string offset;
string mapInfo;
char *data;
int isEncrypted;
};
#endif // ATLASOBJECT_H

我的 AtpReader.cpp 是:

#include "atpreader.h"

#include <iostream>
#include <fstream>
#include <stdint.h>
#include <sstream>

AtpReader::AtpReader()
{
printf("AtpReader()\n");
}

AtpReader::AtpReader(string filename)
{
printf("AtpReader(%s)\n",filename.c_str());
}

最佳答案

我看到你没有在 AtpReader.cpp 中包含 AtpReader.h,但可能你只是在复制/粘贴时错过了它,将它插入这里,因为如果你没有真正包含它,错误就会是不同的。另外,我看到您在 main.cpp 中同时包含了“atlasobject.h”和“atp.h”,你真的不需要那个。

稍后编辑:您的问题出在 atp.h 中……您的构造函数已声明但从未定义。这样做:ATP(){};

关于c++ - 创建对象时未解析的外部符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19550097/

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