C++ 从父类调用方法

C++ 从父类调用方法,c++,C++,首先:我知道我的问题不是关于父类的,但我不知道这个结构是如何调用的,我认为父类是最容易描述它的 我有两个这样定义的类: class class_a { void foo() { //stuff } }; class class_b { class_a A; void foo() { //more stuff } }; 我想要类_b::foo();在类_a::foo()中满足某些要求时调用;可以在类_a中设置一个变量,然后

首先:我知道我的问题不是关于父类的,但我不知道这个结构是如何调用的,我认为父类是最容易描述它的

我有两个这样定义的类:

class class_a {
    void foo() {
        //stuff
    }
};

class class_b {
    class_a A;
    void foo() {
        //more stuff
    }
};
我想要类_b::foo();在类_a::foo()中满足某些要求时调用;可以在类_a中设置一个变量,然后在类_b::foo()中检查它;但我想知道是否有更优雅的解决方案


注意:类_b是并且不能从类_a派生。

您可以做的一件事是创建第三个类来抽象此行为,无论它是从这两个类派生的,还是仅仅是独立的

对于术语,
class_b
包含或拥有
class_a
的实例


要从
class\u a::foo
调用
class\u b::foo
,需要将
class\u b
的实例提供给
class\u a::foo
。如您所述,可以通过向
类a
添加成员变量,或向
类a::foo
添加参数来实现这一点(这两种方法都会在两个类之间创建循环依赖关系,最好避免这种情况-您应该重新考虑您的设计)。或者通过一个全局变量(通常也不推荐使用,因为这样很难遵循控制流、单元测试等)。

我不确定我是否完全理解您的意图,一个更具体的示例可能会有所帮助,但也许这正是您想要的:

class class_b;

class class_a {
    void foo(class_b* b);
};

class class_b {
    class_a A;
    void foo() {
        A.foo(this);
    }
    void foo_impl() {
        // stuff based on requirements in a::foo
    }
};

void class_a::foo(class_b* b) {
    //stuff
    if (conditionsMet()) {
        b->foo_impl();
    }
}

为什么不在类_b::foo()中只使用局部变量呢?根据
某些要求存储函数指针怎么样?
?尽管有解决方法来实现这种行为,但这听起来像是一种糟糕的设计。。你到底想做什么?我认为你应该更具体地说明
某些要求是什么,为什么在课程a::foo()中满足这些要求,等等@KarolyHorvath我正在尝试为学校作业创建俄罗斯方块攻击克隆。我为整个字段创建了一个类,为一行块创建了一个类,为光标创建了一个类。我这样做是因为我的老师想让我把所有的东西都放在课堂上。field类同时拥有row和cursor类。在这种情况下,cursor类处理用户输入,但是当按下空格键时,我需要改变块的位置,这是row类的一部分。我认为这是最接近我想要实现的。谢谢:)