我有简单的通用界面,如下所示:
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类,它通过函数
在Class中初始化// 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'
我的问题是,我是否需要包含即将在已实现的类中使用的所有函数?
答案 0 :(得分:0)
我的问题是,我是否需要包含即将在已实施的课程中使用的所有功能?
是的,您需要通过界面指针或参考包含使用所需的所有功能。
在派生界面的类中实现的任何其他函数都不需要在那里声明。
您仍然可以使用p[0]
或malloc
来获取实现类的指针或引用。
答案 1 :(得分:0)
+nan.0
的类型为range
。
班级m_GeneralDriverInterface
没有方法GeneralDriverInterface
。
我是否需要包含即将使用的所有功能 实施了课程?
是的,是的,你这样做。
编译器如何知道它应该调用哪种方法?