C 如何在抽象父母类中调用儿童方法
c++ How to call child method in abstract parent class?
我的代码有问题。
class A{
virtual foo()=0;
}
class B: public A {
foo();
foo2();
operator X(A * a) {a->foo2()} //doesn't work
}
class C: public A {
foo();
foo2();
operator X(A * a) {a->foo2()} //doesn't work.
}
因此,我有一个虚拟类,从中继承了两个类。而且,无论是B还是C,我都必须定义一个作用于A对象的操作员X(因为它不能是A,因为A是抽象的)。问题是操作员调用Foo2(),我不允许在A类中写入A?我该怎么办?
非常感谢您的帮助。这是我的第一篇文章。
右答案是在A中声明foo2
纯虚拟的。但是,您被告知您不允许这样做。嘘: - (
您唯一剩下的选项是使用dynamic_cast
。
void do_foo2(A* a)
{
if (B* b = dynamic_cast<B*>(b))
return b->foo2();
C& c = dynamic_cast<C&>(*a); // Will throw if a is not B or C.
return c.foo2();
}
然后
void B::operator X(A* a)
{
do_foo2(a);
}
注意:所有这些都假定您应该使B::operator X
与B和C。
相关文章:
- 在c++中多次调用方法
- 如何确保在使用基于布尔值的两个方法之一调用方法时避免分支预测错误
- 接收字符串并使用它来调用方法C++
- 使用 gmock c++ 在真实对象上调用方法
- 不带预处理器的调用方法/文件的文件名/行号
- JNI从Android调用C++方法
- 在 C++ 的 Switch Case 中创建对象后对对象调用方法
- 如何使用接口指针调用方法,该指针是其具体类的一部分,而不是接口的一部分
- 从内部类中的方法从包含类调用方法
- 在销毁期间从另一个线程调用对象上调用方法是否未定义行为?
- 为什么派生类的实例从基类调用方法?
- 实例化对象并调用方法,使用单行语法在 C# 或 C++ 中返回值?
- C++当您取消引用指向类对象的指针,然后将其作为引用返回时,是否可以对此引用调用方法
- 通过模板函数对未知类型调用方法
- 从基于迭代器的for循环转换后,如何在map::find()中调用方法
- 创建一个C++DLL以从C#DLL调用方法
- 如何从qt中的类中调用方法
- 如何在不迭代的情况下对数组中的每个元素调用方法
- C++11 - 获取编译时的所有类变量,并在没有 Boost 的情况下为它们调用方法
- C ++:如何在不创建对象的情况下在主函数中调用方法