【发布时间】:2018-10-18 17:46:01
【问题描述】:
我有一个获取父类作为参数的方法。 我需要在编译时知道该参数的子类是什么。
class A{
...
};
class B: public A{
...
};
class C: public A{
...
};
void foo(A a){
//is a specialized in B or C?
}
C c;
foo(c); //here it is C
【问题讨论】:
-
解释为什么你认为你需要知道这一点。事实上,在 foo() 中,由于切片,它始终是 A 类型的对象。
-
使用
foo,如您所见,按值获取A对象,它既不是B也不是C。 -
你应该有2个
foo函数:void foo(B b){}和void foo(C c){} -
解决你遇到的任何问题的方法要么是通过重载,要么是通过虚函数和多态。
标签: c++ inheritance multiple-inheritance