一个类C ++中的多个头文件(Arduino)

时间:2013-10-22 12:16:43

标签: c++

我有一个类,其中包含来自不同头文件的方法,如下所示:

#include "ICash.h"
#include "ILock.h"

class control: public ICash, public ILock
{
  public:
      control();

  private:
     void doSomething(int value);

};

所以现在当我通过控件类创建ICash实例时。 在control.cpp中,声明了方法。

是否可以通过ICash接口使用控制方法doSomething?

感谢。

2 个答案:

答案 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