这是一个框架代码:
class C{
callMe(){}
};
class A{
// How to use callMe()
};
class B : C {
callMe();
A a;
};
在这个例子中,类B扩展了类C,因此它可以调用callMe()方法。但是我需要使用类A来调用callMe(),因为类A不能扩展类C.我想知道怎么做?
答案 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;
};