首页 > 解决方案 > 获取参数的子类

问题描述

我有一个将父类作为参数的方法。我需要在编译时知道该参数的子类是什么。

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

标签: c++inheritancemultiple-inheritance

解决方案


您的期望背后的概念是一种编译时多态性......

您可以通过函数重载来实现它。

编写两个不同的函数并没有错(正如评论中的 DimChtz 所说)......一个带有 B 类型的参数,另一个带有 C 类型的参数。


推荐阅读