我有一个类,其中包含来自不同头文件的方法,如下所示:
#include "ICash.h"
#include "ILock.h"
class control: public ICash, public ILock
{
public:
control();
private:
void doSomething(int value);
};
所以现在当我通过控件类创建ICash实例时。 在control.cpp中,声明了方法。
是否可以通过ICash接口使用控制方法doSomething?
感谢。
答案 0 :(得分:2)
例如,在control.cpp
中,您可以使用此实现代码:
control::control() { /* ctor body */ }
void control::doSomething(int value)
{
// your code here
}
然后,在某个地方,您可以通过指向control
ICash
实例
ICash *cash = new control;
如果doSomething
不是private
,则仅当void doSomething(int)
也有声明时,您才可以使用此cash
指针cash->doSomething(5)
ICash
(虚拟与否)void doSomething(int)
。
简而言之,为了能够在doSomething
中使用ICash
,它必须在ICash
内声明。
请注意,在doSomething
中声明ICash
并在control
(重写)中重新定义方法时,您希望ICash
中的声明为{{1} }。
答案 1 :(得分:0)
我想这些方法是在相应的头类中声明的,但如果你想让它们做一些有用的事情,你必须在你自己的类中重新定义它们。
do控件类中的某些内容是私有方法,因此,将无法在其所有类之外使用。但是你从ICash和ILock接口重新定义了一个或多个方法,你可以从这些方法中调用doSomething,例如:假设一个接口有一个方法methodXXX:
class ISomething {
public:
virtual void callMe(int value);
}
class control: public ISomething {
public:
control();
void callMe(int value) {
return doSomething(value);
}
private:
void doSomething(int value);
}
void control::doSomething(int value) {
// do something :)
}
// somewhere later:
ISomething* something = new control();
something.callMe(5);//calls control.doSomething(5) internally