предбразования
От: Аноним  
Дата: 04.02.04 14:52
Оценка:
Для такого случая насколько верна замена B* b = (B*)a;

для предбразования в C++ стиле, т. е что нужно использовать из списка
B* b = static_cast<B*>(a);
B* b = dynamic_cast<B*>(a);
B* b = reinterpret_cast<B*>(a);

class A
{
public:
    virtual int get_int() = 0;
};

class B: public A
{
public:
    int get_int() {return 0;}
};

A* a = new B();
B* b = (B*)a;
Re: предбразования
От: Lorenzo_LAMAS  
Дата: 04.02.04 14:53
Оценка:
А>B* b = static_cast<B*>(a);
Of course, the code must be complete enough to compile and link.
Re: предбразования
От: jazzer Россия Skype: enerjazzer
Дата: 04.02.04 14:55
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Для такого случая насколько верна замена B* b = (B*)a;


А>для предбразования в C++ стиле, т. е что нужно использовать из списка

А>B* b = static_cast<B*>(a);
А>B* b = dynamic_cast<B*>(a);
А>B* b = reinterpret_cast<B*>(a);

А>
А>class A
А>{
А>public:
А>    virtual int get_int() = 0;
А>};

А>class B: public A
А>{
А>public:
А>    int get_int() {return 0;}
А>};

А>A* a = new B();
А>B* b = (B*)a;
А>


достаточно static_cast

если не уверен, что а ссылается на объект типа В — dynamic_cast, он проверит
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.