gpt4 book ai didi

c++ - 共享库中的抽象类

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:36:51 24 4
gpt4 key购买 nike

我有一个普通的抽象类,它有几个纯虚方法。该类本身是共享库的一部分。共享库本身编译就OK了。但是,当库链接到另一个程序时,该程序具有另一个派生自共享库中的抽象类并定义纯虚拟方法的类,我会收到以下链接器错误。

我这样编译..:

g++ -I../path/to/the/library main.cpp derived.cpp -L../path/to/the/library -lsomename -o shared 

链接器错误是:

libsomename.so: undefined reference to `AbstractClass::method()'

这就像抽象类无法访问它的纯虚方法,但我不会尝试在库中的任何地方创建抽象类的任何实例。

可能是什么问题?

最佳答案

定义抽象类时,您必须将所有函数设为虚函数,并以 =0 结尾,即:

class DPReporterI
{
public:
virtual uint32 getProviderCount()=0;
virtual uint32 getProviderId(uint32 index)=0;

virtual uint32 getLastRate(uint32 id)=0;
virtual void getName(uint32 id, char* buff, uint32 size)=0;
};

确保你这样做并且它应该有效。

关于c++ - 共享库中的抽象类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2664566/

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