错误LNK2001:未解析的外部符号-当创建抽象类c++
error LNK2001: unresolved external symbol - when creating abstract class c++
UrzadzenieElektroniczne是我的抽象类,computer继承自它。我还是会出错。我试图修复它们,但我在互联网上找到的解决方案都不起作用。我的虚函数的定义和声明是否有问题,或者我应该在其他地方寻找错误?:错误:
1>CKomputer.obj : error LNK2001: unresolved external symbol "public: virtual void__thiscall Komputer::wlaczenieurz(void)" (?wlaczenieurz@Komputer@@UAEXXZ)
<标题> UrzadzenieElektroniczne.h h1> CKomputer.h h1> CKomputer.cpp h1> div class="answers"> 这是一个打字错误。:)
void UrzadzenieElektroniczne::wlaczenieurz()
应:void Komputer::wlaczenieurz()
标题>您的函数可能应该符合Komputer
的成员资格:
void Komputer::wlaczenieurz()
// ^^^^^^^^
{
if (czy_wlaczony == 0)
cout<<"Komputer wylaczony"<<endl;
if (czy_wlaczony == 1)
cout<<"Komputer wlaczony"<<endl;
}
您需要定义void UrzadzenieElektroniczne::wlaczenieurz()
而不是void Komputer::wlaczenieurz()
。棘手的部分是c++实际上允许定义纯虚函数。通过它们只能被非虚拟呼叫访问。
您的代码在基类中声明了2 wlaczenieurz()
,它是纯虚的,因此不需要定义,派生类中必须有定义。虽然在你的情况下,这显然是打印错误,一般情况下,你可能有一些默认的纯虚函数的实现,可以在派生类中通过添加using
语句来使用。
例如,在您的情况下,Komputer
中的using UrzadzenieElektroniczne::wlaczenieurz;
而不是wlaczenieurz
声明也应该修复错误。
相关文章:
- 如何防止 CMake 在构建时(而不是在安装时)为共享库创建符号链接?
- Rcpp 包创建符号未找到错误
- 创建具有未定义溢出的无符号 int
- 创建类时已定义的未解析外部符号
- 使用JNI和OPENCV创建的LIB的未定义符号
- bad_alloc::'标量删除析构函数'(无符号整数)当我尝试创建矢量 470MB 大小时
- 在创建共享对象时,不能使用针对未定义符号的重定位R_X86_64_PC32;使用-fPIC重新编译
- g++ - 虚拟方法在生成的二进制中创建符号,我无法隐藏
- 我可以在libleveldb.a中找到符号,但是当我创建共享库时,找不到相同的符号。
- 创建指向未符号char []的指针,然后将其传递给SF :: Soundbuffer :: LoadFromememor
- 使用C constexpr可以创建符号重复
- 创建集合成员(C )成员的每个置换和符号变化的集合
- 为什么不在此静态库中创建多个定义的符号?
- 富文本编辑器--创建和维护项目符号列表时的问题
- 通过使用新操作员创建对象会导致未解决的外部符号错误C FTGL
- LNK2019未解析的外部符号.创建二叉树
- g++正在创建静态库:无法读取符号.存档没有索引
- 尝试创建一个 3D 矢量,该矢量将保留指向指向无符号字符的指针的指针
- 严格的混叠警告,创建对无符号字符数组 + 偏移量的uint32_t引用
- Ctypes 在使用 CMake 创建的共享库中找不到符号