在下面的示例中,有一种很好的方法可以从B :: bar()调用A :: foo()吗?
class A {
protected:
void foo() {}
};
class B : public A {
public:
void bar(A& a) { // edit: called with &a != this
a.foo(); // does not work
}
};
除了宣布B成为A的朋友之外,我想不出任何其他事情,但是这可能会因为更多的课而变得非常难看.
有任何想法吗?
解决方法:
是的,您可以使用基类功能.
class A {
protected:
void foo() {}
void do_other_foo(A& ref) {
ref.foo();
}
};
class B : public A {
public:
void bar(A& a) { // edit: called with &a != this
this->do_other_foo(a);
}
};