从不同类调用函数

function calling from a different class

本文关键字:函数 调用 同类      更新时间:2023-10-16

这是一个骨架代码:

class C{
  callMe(){}
};
class A{
  // How to use callMe()
};
class B : C {
  callMe();
  A a;
};

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

你需要让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++中自动标记为虚拟,如果要使用多态性,则必须将它们标记为虚拟,并且必须从指针使用它们才能正常工作。

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

class A{
//use call me here
};

您需要提供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;
};