1

我正在做一个经过深思熟虑的项目,相当糟糕。我有访问彼此成员函数的子类。情况如下:

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 类的“相互作用”性质吗?

4

2 回答 2

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_;
}
于 2013-01-27T10:14:18.283 回答
-1

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

于 2013-01-27T10:06:47.303 回答