Нахождение типа объекта в C ++ - PullRequest
130 голосов
/ 09 декабря 2008

У меня есть класс A и другой класс, который наследуется от него, B. Я переопределяю функцию, которая принимает объект типа A в качестве параметра, поэтому я должен принять A. Однако позже я вызываю функции, B, поэтому я хочу вернуть false и не продолжать, если переданный объект не относится к типу B.

Каков наилучший способ узнать, какой тип объекта передан моей функции?

Ответы [ 11 ]

1 голос
/ 09 декабря 2008

Используйте перегруженные функции. Не требует dynamic_cast или даже RTTI поддержки:

class A {};
class B : public A {};

class Foo {
public:
    void Bar(A& a) {
        // do something
    }
    void Bar(B& b) {
        Bar(static_cast<A&>(b));
        // do B specific stuff
    }
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...