如何设置代表接口的类?这只是一个抽象的基类吗?
将final关键字添加到虚函数声明时,我遇到了一个奇怪的情况,其定义在一个单独的.cpp文件中.
请考虑以下示例:
IClass.hpp
class IClass //COM-like base interface
{
protected:
virtual ~IClass(){} //derived classes override this
public:
virtual void release() final;
};
Run Code Online (Sandbox Code Playgroud)
dllmain.cpp(共享库)
#include "IClass.hpp"
...
void IClass::release()
{
delete this;
}
...
Run Code Online (Sandbox Code Playgroud)
main.cpp(独立可执行文件)
//various includes here
...
int main(int argc, char** argv)
{
/* From "IGameEngine.hpp"
class IGameEngine : public IClass
{
...
};
*/
IGameEngine* engine = factoryGameEngine();
...
engine->release();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
事实上,GCC 4.9.2将报告undefined reference to 'IClass::release()'
我的目标是IClass::release()在将其实现隐藏在游戏引擎的共享库中时,将其作为不可覆盖的.
有什么建议?