C++未定义的引用
C++ Undefined Reference
可能的重复项:
c++ " 未定义引用 'Foo::Foo(std::string)' "
我得到了三个.cpp
文件和two header files.
但是当我编译它们时,意思是Point.cpp
,Data.cpp
和main.cpp
,它会说
main.cpp: undefined reference to "PointD::PointD()' collect2: ld returned 1 exit status
以下是我Data.h
:
#include <iostream>
#include <string>
using namespace std;
class Data
{
private:
string sType;
public:
Data();
Data(string);
void setSType(string);
string getSType();
};
以下是我data.cpp
:
#include "Data.h"
Data::Data()
{
sType = "";
}
Data::Data(string s)
{
sType = s;
}
void Data::setSType(string ss)
{
sType = ss;
}
string Data::getSType()
{
return sType;
}
以下是我PointD.h
:
#include <iostream>
#include <string>
#include "Data.h"
using namespace std;
class PointD
{
private:
int x
Data data1;
public:
PointD();
PointD(int,Data);
void setX(int);
void setData(Data);
int getX();
Data getData();
};
以下是我PointD.cpp
:
#include "PointD.h"
PointD::PointD()
{
x = 0;
}
PointD::PointD(int xOrdinate,Data dd)
{
x = xOrdinate;
data1 = dd;
}
void PointD::setXordinate(int Xordinate)
{
x = Xordinate;
}
void PointD::setData(Data dd)
{
data1 = dd;
};
int PointD::getXordinate()
{
return x;
}
Data PointD::getData()
{
return data1;
}
这是我的main.cpp
:
#include <iostream>
#include <string>
#include "Data.h"
#include "PointD.h"
using namespace std;
int main()
{
const int MAX_NUM = 20;
Data ldata[MAX_NUM];
PointD pointd[MAX_NUM];
//more codes..
}
但是当我编译它们时,意思是Point.cpp
,Data.cpp
和main.cpp
,它会说
main.cpp:未定义对"PointD::P ointD()"的引用 collect2:ld 返回 1 个退出状态
您可能正在尝试编译和链接main.cpp,而没有PointD.cpp或data.cpp。尝试将所有源添加到命令中,或者在将它们链接在一起之前仅编译所有源。
引发错误是因为 g++ 找不到 PointD 和数据定义所需的依赖项。因此,这些类成为未定义的引用。
使用以下命令进行编译,以便 main 能够找到类定义
g++ main.cpp Data.cpp PointD.cpp -o main
此外,删除该语句
#include "Data.h"
从你的 main.cpp;否则它将找到两次类定义。
此外,您必须添加
int getXordinate();
void setXordinate(int Xordinate);
到您的 PointD.h 进行无错误编译。
希望这有帮助!
相关文章:
- 编译C++时未定义的引用
- 如何修复此错误:未定义对"距离(浮点数,浮点数,浮点数,浮点数,浮点数)"的引用
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- 对C宏的未定义引用,但在定义它时会出现重新定义错误
- 未定义的引用在哪里
- 编译时的 CImg 库返回对"__imp_SetDIBitsToDevice"的未定义引用
- 对Py_Initialize()的未定义引用
- 使用mysql c++连接器的未定义引用
- 未定义的引用 .. 使用 OpenCV 编译 C++ 代码时,从命令行
- 对 Scalar ::Scalar() 的未定义引用
- 已定义函数时出现 G++ "未定义的引用"错误
- 链接 cmake 时出现未定义的引用错误
- 对复制 CTOR 和 CTOR 的未定义引用
- 错误:未定义对'oboe::AudioStreamBuilder::openStream(oboe::AudioStream**)'的引用
- 右值引用未定义的行为
- 对"vtable for DigitalClock"的未定义引用 - 未定义对"DigitalClock::staticMetaObject"的引用 - Qt
- 函数类型到函数类型的引用:未定义的引用
- avcodec_alloc_context引用未定义,但ffmpeg链接顺序正确
- 从c++调用Fortran子程序,链接时引用未定义
- 枚举引用未定义,但位于包含的头文件中