Получить дочерний класс аргумента - PullRequest
0 голосов
/ 08 мая 2018

У меня есть метод, который получает родительский класс в качестве аргумента. Мне нужно знать во время компиляции, что является дочерним классом этого аргумента.

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

1 Ответ

0 голосов
/ 08 мая 2018

Концепция, лежащая в основе ваших ожиданий, является своего рода полиморфизмом времени компиляции ....

Этого можно добиться, перегрузив функцию.

Нет ничего плохого в написании двух разных функций (как сказал DimChtz в комментариях) .... одна с аргументом для типа B, а другая с аргументом для типа C.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...