函数从另一个类调用

时间:2012-08-13 13:53:38

标签: c++

这是一个框架代码:

class C{
  callMe(){}
};

class A{
  // How to use callMe()
};

class B : C {
  callMe();
  A a;
};

在这个例子中,类B扩展了类C,因此它可以调用callMe()方法。但是我需要使用类A来调用callMe(),因为类A不能扩展类C.我想知道怎么做?

3 个答案:

答案 0 :(得分:2)

你需要让A包含一个C类型的对象。

class A
{
 private:
   C objC;

 public:
   void WhateverMethod() { objC.CallMe(); }

};

此外,继承的语法是

class B : C{

};

如果您希望B只能访问CallMe(),那么您不需要在B中重新定义它。它将从C继承它。如果您希望B覆盖CallMe,那么您需要这样做:

class C
{
  public:
    virtual void CallMe() { //definition }

};

class B : public C
{
 public:
   void CallMe() { //redefine it here }

};

注意,我从你的语法错误中假设你是一名JAVA程序员。在C ++中,方法不会自动标记为虚拟,如果要使用多态,则必须将它们标记为虚拟,并且必须从指针使用它们才能使用它。

答案 1 :(得分:1)

class C{ 
  callMe(){} 
friend class A;
}; 


class A{

//use call me here

};

答案 2 :(得分:0)

您需要提供C的实例:

class C {
public: // has to be public
  void callMe() const {}
};

class A{
public:
    A(const C& inst) : inst(inst) {}

    void foo() {
        inst.callMe();
    }
private:
    const C& inst;
};