我正在做一个经过深思熟虑的项目,但很糟糕。我有子类可以访问彼此的成员函数。情况是这样的:
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 类的“相互作用”性质。
最佳答案
如果你的意思是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_;
}
关于c++ - 子类互相访问对方的成员函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14546289/