C++ 使用qt Creator IDE找不到体系结构x86_64(C+;+;)的符号

C++ 使用qt Creator IDE找不到体系结构x86_64(C+;+;)的符号,c++,qt,x86-64,C++,Qt,X86 64,我基本上被一个我想测试的程序卡住了,因为我一直在得到这个符号“未发现错误” 我的程序很简单,我是C++初学者,所以我只是想学习一些继承的东西。以下是该计划的结构: 所以它非常简单,我有两个抽象类,分别是Vehicle.h和MotorVehicle.h,Bus和Car将继承MotorVehicle的属性。h和Bicycle将是Vehicle.h的后代,因为它不是机动车 有很多代码和很多文件,所以如果有人想知道代码,我就把qt项目文件夹留在这里: 现在,出于某种原因,我一直得到架构x86_64未

我基本上被一个我想测试的程序卡住了,因为我一直在得到这个符号“未发现错误”

我的程序很简单,我是C++初学者,所以我只是想学习一些继承的东西。以下是该计划的结构:

所以它非常简单,我有两个抽象类,分别是Vehicle.hMotorVehicle.hBusCar将继承MotorVehicle的属性。hBicycle将是Vehicle.h的后代,因为它不是机动车

有很多代码和很多文件,所以如果有人想知道代码,我就把qt项目文件夹留在这里:

现在,出于某种原因,我一直得到架构x86_64未找到的符号错误。每当我想运行程序时,我检查了qt Creator的编译输出,下面是它的说明:

Undefined symbols for architecture x86_64:
  "vehicle::MotorVehicle::~MotorVehicle()", referenced from:
  Car::~Car() in main.o
  Bus::~Bus() in main.o
  Car::~Car() in Car.o
  Bus::~Bus() in Bus.o
  "vehicle::Vehicle::~Vehicle()", referenced from:
  Bicycle::~Bicycle() in main.o
  Bicycle::~Bicycle() in Bicycle.o
  "typeinfo for vehicle::MotorVehicle", referenced from:
  typeinfo for Car in Car.o
  typeinfo for Bus in Bus.o
  "typeinfo for vehicle::Vehicle", referenced from:
  typeinfo for Bicycle in Bicycle.o
  "vtable for vehicle::MotorVehicle", referenced from:
  vehicle::MotorVehicle::MotorVehicle(int, int, int, double) in main.o
  vehicle::MotorVehicle::MotorVehicle(int, int, int,    std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, double) in main.o
  NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
  "vtable for vehicle::Vehicle", referenced from:
  vehicle::Vehicle::Vehicle(int, int, is std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) in main.o
  NOTE: a missing vtable usually means the first non-inline virtual member    function has no definition.
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [Vehicles] Error 1
02:38:06: The process "/usr/bin/make" exited with code 2.
Error while building/deploying project Vehicles (kit: Desktop Qt 5.8.0 clang 64bit)
When executing step "Make"
架构x86_64的未定义符号: “vehicle::MotorVehicle::~MotorVehicle()”,引用自: 车::~Car()在主楼 总线::~Bus()位于main.o中 车::~Car()在车里 总线::~Bus()在Bus.o中 “vehicle::vehicle::~vehicle()”,引用自: Bicycle::~Bicycle()在main.o中 自行车::~Bicycle()在Bicycle.o中 “车辆类型信息::机动车辆”,参考自: 车内车的类型信息。o 总线中总线的类型信息。o “车辆类型信息::车辆”,引用自: Bicycle.o中自行车的类型信息 “车辆用vtable::MotorVehicle”,引用自: 车辆::机动车辆::主驾驶室中的机动车辆(整数、整数、整数、双倍)。o vehicle::MotorVehicle::MotorVehicle(int,int,int,std::_1::基本字符串,双精度)在main.o中 注意:缺少vtable通常意味着第一个非内联虚拟成员函数没有定义。 “车辆用vtable::vehicle”,引用自: main.o中的vehicle::vehicle::vehicle(int,int,是std:_1::basic_字符串) 注意:缺少vtable通常意味着第一个非内联虚拟成员函数没有定义。 ld:找不到架构x86_64的符号 叮当声:错误:链接器命令失败,退出代码为1(使用-v查看调用) 制造:**[车辆]错误1 02:38:06:进程“/usr/bin/make”已退出,代码为2。 构建/部署项目车辆时出错(套件:桌面Qt 5.8.0 64位) 执行步骤“Make”时

我可以说我很困惑,因为我对C++非常陌生,我已经尝试从其他的讨论线程中寻找答案,但是我找不到与我相关的任何东西,所以看起来(或者我只是还没有足够努力)


干杯,伙计们,提前非常感谢

您将析构函数声明到Vehicle类中,
virtual~Vehicle()
,但您没有提供它的实现。如果你不想释放任何东西,你应该像这样声明它
virtual~Vehicle(){}
。这同样适用于
机动车
自毁装置


“未找到符号”错误具有误导性。实际上,它是说有一个已定义的符号,主要是函数,但没有找到实现。

您正在将析构函数声明到Vehicle类中,
virtual~Vehicle()
,但您没有为它提供实现。如果你不想释放任何东西,你应该像这样声明它
virtual~Vehicle(){}
。这同样适用于
机动车
自毁装置


“未找到符号”错误具有误导性。实际上,它是说有一个定义的符号,主要是函数,但没有找到它的实现。

哦,废话!!!所以这就是它是什么哈哈,天哪,非常感谢你花宝贵的时间来看看我的代码。我对这个很陌生,我甚至不知道析构函数的真正用途,所以我还有很长的路要走。干杯,伙计!再次感谢大家!:)因为您不使用动态内存分配,也不获取任何资源,所以您实际上不必处理析构函数。尽管如此,了解析构函数还是很重要的:多谢了,伙计,当我周末有时间的时候,我一定会读到的。干杯~哦,糟了!!!所以这就是它是什么哈哈,天哪,非常感谢你花宝贵的时间来看看我的代码。我对这个很陌生,我甚至不知道析构函数的真正用途,所以我还有很长的路要走。干杯,伙计!再次感谢大家!:)因为您不使用动态内存分配,也不获取任何资源,所以您实际上不必处理析构函数。尽管如此,了解析构函数还是很重要的:多谢了,伙计,当我周末有时间的时候,我一定会读到的。干杯~