C++链接器错误:未定义引用
C++ linker error: undefined reference to
当我尝试在 Dev C++ 或 Geany 中编译 C++ 程序时,我收到以下错误消息:
[Linker error] undefined reference to `Reakcijska_pot::Reakcijska_pot()'
ld returned 1 exit status
我的代码是:
#include <iostream>
using namespace std;
class Reakcijska_pot
{
protected:
float reakcijska_pot;
float zacetna_hitrost;
float reakcijski_cas;
public:
Reakcijska_pot();
Reakcijska_pot(float v0)
{
float s1; float t1;
v0=v0 / 3.6;
t1=2.0;
s1=v0*t1;
reakcijska_pot=s1;
zacetna_hitrost=v0;
reakcijski_cas=t1;
}
void izpis_reakc()
{
cout <<"Reakcijska pot za vaso hitrost je: " <<reakcijska_pot <<"m" <<endl;
}
};
class Pojemek
{
protected:
float pojemek;
float koeficient_trenja;
float tezni_pospesek;
public:
Pojemek();
Pojemek(float am, float kt, float g)
{
g=9.8;
am=kt*g;
pojemek=am;
koeficient_trenja=kt;
tezni_pospesek=g;
}
};
class Pot_do_pojava_zavornih_sledi : public Reakcijska_pot
{
protected:
float reakcija_zavor;
float pot_rz;
public:
Pot_do_pojava_zavornih_sledi();
Pot_do_pojava_zavornih_sledi(float v0)
{
float t2; float s2;
t2=0.2;
s2=v0*t2;
reakcija_zavor=t2;
pot_rz=s2;
zacetna_hitrost=v0;
}
void izpis_pdpzs()
{
cout << "Dolzina prevozene poti ob reakciji zavor znasa: " <<pot_rz <<" m.";
}
};
class Pot_zaviranja : public Pojemek, public Reakcijska_pot
{
protected:
float zavorna_pot;
float koncna_hitrost;
public:
Pot_zaviranja();
Pot_zaviranja(float s3, float zacetna_hitrost, float vn, float pojemek, float reakcija_zavor)
{
zavorna_pot=s3;
koncna_hitrost=vn;
vn=0;
s3=(((zacetna_hitrost * zacetna_hitrost) - (vn * vn)) / (pojemek * pojemek)) + ((pojemek*(reakcija_zavor*reakcija_zavor))/8) - ((zacetna_hitrost*reakcija_zavor)/2);
}
void izpis_potz()
{
cout << "Dolzina poti zaviranja pri vasi hitrosti znasa: " <<zavorna_pot <<"m." <<endl;
}
};
class Pot_ustavljanja : public Pot_do_pojava_zavornih_sledi, public Pot_zaviranja
{
protected:
float pot_ustavitve;
public:
Pot_ustavljanja(float s, float reakcijska_pot, float zavorna_pot, float pot_rz)
{
pot_ustavitve=s;
s=reakcijska_pot+zavorna_pot+pot_rz;
}
void izpis_potust()
{
cout << "Pot ustavljanja pri vasi hitrosti je dolga: " <<pot_ustavitve <<"m.";
}
};
int main()
{
float v0, kt;
int podl;
cout << "Vnesite hitrost vasega vozila v km/h: "; cin >>v0; cout <<endl;
cout << "Izberite zavorno podlagon" << "Vpisite 1 za suh asfaltn" << "Vpisite 2 za moker asfaltn" << "Vpisite 3 za poledenel asfaltn";
cin >>podl;
if (podl == 1)
kt=0.6;
else
if (podl == 2)
kt=0.3;
else
kt=0.1;
Reakcijska_pot pot1(v0);
pot1.izpis_reakc();
Pot_do_pojava_zavornih_sledi pdpzs(v0);
pdpzs.izpis_pdpzs();
system ("pause");
return 0;
}
有人可以帮助我解决这个问题吗?
这句话在main
Pot_do_pojava_zavornih_sledi pdpzs(v0);
调用 Reakcijska_pot
的默认构造函数,因为class Pot_do_pojava_zavornih_sledi
继承自 Reakcijska_pot
。
但尚未定义 Reakcijska_pot
的默认构造函数,因此链接器输出错误。
可以通过为Reakcijska_pot
默认构造函数提供定义来更正此错误:
Reakcijska_pot() {}
您尚未在任何地方定义Reakcijska_pot::Reakcijska_pot
,尽管您的程序中需要它。
要定义它,只需将声明替换为类似
Reakcijska_pot() { }
从C++11开始,你也可以写
Reakcijska_pot() = default;
以产生与构造函数的空定义相同的结果。
相关文章:
- 对C宏的未定义引用,但在定义它时会出现重新定义错误
- 编译时的 CImg 库返回对"__imp_SetDIBitsToDevice"的未定义引用
- 对Py_Initialize()的未定义引用
- 使用mysql c++连接器的未定义引用
- 对 Scalar ::Scalar() 的未定义引用
- 对复制 CTOR 和 CTOR 的未定义引用
- 对显式实例化的模板函数的未定义引用
- TensorRT (C++ API) 对"createNvOnnxParser_INTERNAL"的未定义引用
- 2个模板化类的非模板友元函数未定义引用错误
- 编译 libfluid 样本控制器时对"event_base_del_virtual"的未定义引用
- 获取对function_name的未定义引用
- 对 'std::thread::_M_start_thread CMake 的未定义引用进行基准测试
- 对结构方法的未定义引用
- 使用内联函数 c++ 的未定义引用
- 对 CMake 中'cudaRegisterLinkedBinary'链接错误的未定义引用?
- 对 DLOPEN 的未定义引用
- QT C++中对全局变量的未定义引用
- 快速数学导致对"__pow_finite"的未定义引用
- 对 boost::system::d etail::system_category_instance 的未定义引用,从
- OpenCV 3.4.3 中对 'cv::String::d eallocate()' 错误的未定义引用