我正在研究一个经过深思熟虑的项目。我有子类访问彼此的成员函数。情况如下:
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类的“互动”特征。
答案 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)
将方法定义移出类声明,因此将声明这两个类,并且它们的方法彼此可见