【发布时间】:2016-05-25 08:54:09
【问题描述】:
我有一个简单的通用界面,看起来像这样:
Class GeneralDriverInterface
{
public:
virtual void Init() = 0;
};
然后我有一个使用初始化 GeneralDriverInterface 接口的子类之一的类。
class DriverTest : public GeneralDriverInterface
{
public:
DriverTest();
virtual void Init();
bool TestMe();
}
void DriverTest::Init()
{
//init driver stuff
}
bool DriverTest::TestMe()
{
//test driver stuff
}
现在要使用这个 DriverTest 类,它会通过函数在类中初始化
// in the Processing.h header there is :
GeneralDriverInterface* m_GeneralDriverInterface;
void Processing::InitDriver(GeneralDriverInterface* _GeneralDriverInterface)
{
m_GeneralDriverInterface = _GeneralDriverInterface;
m_GeneralDriverInterface->Init();
m_GeneralDriverInterface->TestMe(); // The problematic call !! where it failed in compilation
}
它通过 GeneralFactory 类的构造函数获取它的 Driver 类,如下所示:
GeneralFactory::SetProcessingDriver()
{
GeneralDriverInterface pGeneralDriverInterface = new DriverTest()
m_pProcessing->InitDriver(pGeneralDriverInterface );
}
好的,我尝试使用抽象接口尽可能通用,但我得到了:
error C2039: 'TestMe' : is not a member of 'GeneralDriverInterface'
1> g:\project\GeneralDriverInterface.h(6) : see declaration of 'GeneralDriverInterface'
我的问题是我是否需要在实现的类中包含我要使用的所有功能?
【问题讨论】:
-
您是否希望基类神奇地将其所有派生类的所有成员添加到自己的接口中?
-
是的,你需要在界面中通过界面使用的所有功能。
标签: c++ interface pure-virtual