从父类调用方法
calling method from parent class
第一:我知道我的问题不是关于父类的,但我不知道这种结构是如何称呼的,我认为父是最容易描述的。
我有两个类定义如下:
class class_a {
void foo() {
//stuff
}
};
class class_b {
class_a A;
void foo() {
//more stuff
}
};
我想要 class_b::foo(); 当满足 class_a::foo() 中的某些要求时调用;可以在class_a中设置一个变量并在 class_b::foo() 中检查它;但我想知道是否有更优雅的解决方案。
注意:class_b是,不能从class_a派生。
不确定我是否完全理解您要做什么,一个更具体的例子会有所帮助,但也许这确实是您想要的:
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();
}
}
您可以做的一件事是创建第三个类来抽象此行为,无论它来自两者,还是只是独立的。
对于术语,class_b
包含或拥有class_a
的实例。
要从 class_a::foo
调用class_b::foo
,您需要使class_b
的实例可供class_a::foo
使用。这可以通过将成员变量添加到class_a
来实现,如您所指出的,或者向class_a::foo
添加一个参数(两者都在两个类之间创建循环依赖关系,最好避免这种情况 - 您应该重新考虑您的设计)。或者通过全局变量(通常也不建议这样做,因为它很难遵循控制流,单元测试等)。
相关文章:
- 如何强制从重写方法调用重写的方法基方法?
- C++:使用方法调用析构函数的顺序是什么?
- 派生类调用父类的方法,该方法调用重写的虚拟方法调用错误的方法
- 使用 object 中的方法调用带有 std::bind 和 std::function.target 的 C 样式函数
- 指向类方法调用的指针
- 如何使用 SFINAE 在方法调用中有条件地定义变量?
- 是否有可以处理方法调用依赖关系的设计模式?
- 如何缩短C++中的方法调用?
- 从部分专用模板方法调用模板非静态方法
- 有没有办法禁止派生类中的基类方法调用?
- 为什么这C++只在编译器上编码一个不明确的方法调用Microsoft?
- 从父方法调用子方法
- 如何将子方法调用到父方法
- 虚拟函数在哪里使用 vpointer to vtable 来解析方法调用,非虚拟方法存储在哪里以及如何解析它们?
- 从静态方法调用静态函数指针
- 从同一类中的另一个方法调用方法时出错
- 方法调用意外地像 l 值一样起作用
- 无法从派生的一个方法调用基类方法
- 从类方法调用命名空间中名为 Same 的函数时,重载解析失败
- C 多线程JAVA JNI方法调用