子类访问彼此的成员函数

时间:2013-01-27 10:03:57

标签: c++ inheritance

我正在研究一个经过深思熟虑的项目。我有子类访问彼此的成员函数。情况如下:

class A {
public:
    class B;
    class C;
};

class A::B {
public:
    void f() {
        C:g();
    }
}
class A::C {
public:
    void g() {
        B:f();
    }
}

显然,这段代码遇到了各种错误,这里列出的内容太多了。我的问题是,这种情况的解决方案是什么?它是继承吗?如果是这样,怎么样?有没有其他方法可以保留B类和C类的“互动”特征。

2 个答案:

答案 0 :(得分:0)

如果您的意思是C:g() - > C::g()B:f() - > B::f()

除非这些成员函数是静态的,否则无法在没有对象的情况下调用成员函数。 可能指向对方可能会解决您的问题? 我介绍指针是因为否则我需要写一些东西来帮助解决循环包含问题。:)

#include <memory>

class A::B {
public:
    void f() {
        c_->g();
    }
  std::unique_ptr<C> c_;
}
class A::C {
public:
    void g() {
        b_->f();
    }
  std::unique_ptr<B> b_;
}

答案 1 :(得分:-1)

将方法定义移出类声明,因此将声明这两个类,并且它们的方法彼此可见