gpt4 book ai didi

c++ - 在继承类中删除会导致符号查找错误

转载 作者:行者123 更新时间:2023-11-28 04:44:07 25 4
gpt4 key购买 nike

问题:

我一直在尝试创建一个继承类(在 DLL 中,但这不一定相关)。不过,我收到一个符号查找错误(一个 Unresolved external 问题)。

代码:

#include <iostream>

class Foo {
public:
virtual void print() = 0;
virtual ~Foo() = 0;
};

class Bar : public Foo {
public:
Bar() { std::cout << "Bar()\n"; }
virtual void print() { std::cout << "Bar->print\n"; }
virtual ~Bar() { std::cout << "~Bar()\n"; }
};

int main() {
Foo *b = new Bar();
b->print();
delete b;
return 0;
}

编译时出现如下错误:

bla.cpp:(.text._ZN3BarC2Ev[_ZN3BarC5Ev]+0x47): 未定义对`Foo::~Foo() 的引用

解决方案:

问题是你不能有一个纯虚拟析构函数(仍然不清楚为什么会这样)。所以改变这个:

virtual ~Foo() = 0;

为此:

virtual ~Foo() {}

修复一切。感谢用户me'提供解决方案

最佳答案

改变虚拟 ~LibBase() = 0;虚拟 ~LibBase(){} 在 Window(MinGW) 上工作,输出:

Lib

Print

~Lib

Leaving Main

关于c++ - 在继承类中删除会导致符号查找错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49603968/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com