对派生类的"vtable"的未定义引用
Undefined Reference to 'vtable' for derived class
我是一个完全的初学者,我已经在论坛上阅读了有关此主题的各种帖子,但我仍然不确定我哪里出错了。
这是我的基类:
class room {
protected:
int doors;
string name;
room *north;
room *east;
room *south;
room *west;
public:
room(int numDoors, string rmName);
virtual string getName();
virtual void setRoom(int numDoors, string rmName);
void setConnect(room *room1, room *room2, room *room3, room *room4);
};
room::room(int numDoors, string rmName) : doors(numDoors), name(rmName) {}
string room::getName() {
return this->name;
}
void room::setConnect(room *room1, room *room2, room *room3, room *room4) {
this->north = room1;
this->east = room2;
this->south = room3;
this->west = room4;
return;
}
这是我的派生类:
class treasureRoom : public room {
protected:
string chest[5];
public:
treasureRoom() : base(4, "The Mad King's Hoard") {}
void setChest(string &loot1, string &loot2, string &loot3, string &loot4, string &loot5);
string getChest(int i);
};
void treasureRoom::setChest(string &loot1, string &loot2, string &loot3, string &loot4, string &loot5) {
this->chest[0] = loot1;
this->chest[1] = loot2;
this->chest[2] = loot3;
this->chest[3] = loot4;
this->chest[4] = loot5;
return;
}
string treasureRoom::getChest(int i) {
return this->chest[i];
}
我已经多次尝试实施论坛上讨论的有关此类错误的解决方案,但我仍然缺少一些关键的重要性。任何帮助将不胜感激!
完整的错误消息非常清楚地说明了正在发生的事情:
Undefined symbols for architecture x86_64:
"room::setRoom(int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >)", referenced from:
vtable for room in asd-cc336a.o
vtable for treasureRoom in asd-cc336a.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [asd] Error 1
您没有包含room::setRoom(...)
的定义。
相关文章:
- 对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()' 错误的未定义引用