一个子类的两个派生类,但具有两个返回类型
two derived class of a subclass but with two return type
我有一个超类(a(和两个子类(B,C(
A中的抽象函数在B和C中有两种不同的返回类型!
我必须如何申报这些??
返回类型很重要
class A { //Super Class
public:
A();
virtual (some Type) QWERTY() = 0;
};
class B : public A { //Sub Class
public:
B();
double QWERTY();
};
class C : public A { //Sub Class
public:
C();
unsigned int QWERTY();
};
我愿意用超类指针调用子类函数
由于每个子类中的函数不同,您必须从指向这些子类的指针访问它们。
这正是dynamic_cast<>
可以提供帮助的情况:它可以有条件地将指针从基类转换为子类,当且仅当它恰好是正确的类型:
void foo(A* a_ptr) {
B* b_ptr = dynamic_cast<B*>(a_ptr);
C* c_ptr = dynamic_cast<C*>(a_ptr);
if(b_ptr) {
b_ptr->QWERTY();
}
if(c_ptr) {
c_ptr->QWERTY();
}
}
It's, however, worth mentioning that this is some pretty ugly code, and might be suitable to solve the quiz you are presenting us, but in a normal environment, there are some design reevaluation that would happen before going to implement things this way.
相关文章:
- 可以将两个相同类型的连续数组视为一个数组吗?
- [[no_unique_address]] 和两个相同类型的成员值
- C++将两个不同类型的向量的属性连接到新的向量中
- 如何在 c++ 中将两个不同类型的变量分配给一个变量
- 为什么我不能在同一行中定义两个相同类型的类的成员指针
- 我想添加两个字符串类型的矩阵.用户将不会输入行数或列的数量.用户将仅输入数组
- 是否可以分配两个不同类型的结构
- C++ 重载运算符 - 减去两个相同类型的对象
- C++:从模板中构造具有两个相同类型名称的海峡
- 比较C 中的两个数据类型
- 在C++中,当两个向量类型不同时,如何将值存储到向量内部的向量中
- 两个返回相同值的 Arduino 类实例
- 在整数数据类型和连续两个字符类型之后.第 2 个字符的数据类型跳过..为什么
- 确定两个矢量类型或一个矢量类型与标量类型之间的二进制运算结果的正确大小类型
- 在没有公共getter的情况下,比较两个相同类型的对象是否相等
- 在c++中编写两个基本类型之间的重载比较(==)
- 如何在yacc联合中保存出现在同一规则下的两个相同类型的对象
- Bison:$$和$1指向相同的内存位置(两个指针类型的联合YYSTYPE)
- c++中两个float类型变量的精确比较
- 比较两个不同类型的值