c++ - 子类互相访问对方的成员函数

标签 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 类的“相互作用”性质。

最佳答案

如果你的意思是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/

相关文章:

c++ - SSE 内在函数 - _mm_and_ps 奇怪的行为

Python 在需要传递一个参数时要求两个参数

c++ - 将二维数组的 1 维复制到同一数组的另一部分

generics - TypeScript:继承类中方法的自引用返回类型

java - 在 super 构造函数运行之前初始化字段?

ios - 子类未找到父类(super class)接口(interface)的 Objective-c 错误

c# - 如何在 C# 中修改具有公共(public)父类(super class)的对象列表的成员?

c++ - QtConcurrent 在 App 即将退出时等待完成

php - 如何使用 C++ cURL (libcurl) 管理简单的 PHP session

c++ - 如果有人在 QLineEdit 中双击,我可以创建一个事件吗?