Здравствуйте, Phoenics, Вы писали:
P>Уважаемые граждане форумчане, тут вот такя задачка подвернулась.
P>Дано: Есть указатель void *ptr; Известно что этот указатель указывает на реально существующий объект какого-то класса АА, так же известно что любой из классов АА является потомком класса А.
P>Нужно: 1. По указателю ptr узнать реальный тип объекта, привести указатель ptr к этому типу и...
P>2. вызвать метод класса АА, унаследованный им от класса А;
P>Ну второе-то вроде просто если выполнить первое
P>Вопрос: Возможно ли такое проделать вообще? Т.е. возможно ли по указателю типа void узнать на объект какого типа он указывает?
P>Зарание благодарен.
ну если ты уверен что по этому указателю всегда будет потомок или экземляр класса А, то добавь функцию в класс А, который будет возвращать тип объекта, и переопределяй её во всех потомках. по мойму проще пареной репы. второе следует из первого, а вообще если уверен что там указатель на потомок или экземпляр класса а , то сразу делай так
A *a = dynamic_cast<A *>(ptr);