Re[3]: Так ли это должно быть?
От: Lorenzo_LAMAS  
Дата: 09.02.04 13:32
Оценка: 4 (1)
D>Через поиск не нашел, может ссылочка имеется?

http://rsdn.ru/forum/?mid=523418
Автор: Павел Кузнецов
Дата: 29.01.04


D>И кстати такое преобразование правельно относительно стандарта?


5.4/7
Of course, the code must be complete enough to compile and link.
Так ли это должно быть?
От: Denwer Россия  
Дата: 09.02.04 13:05
Оценка:
class A
{
public:
    int _a;
};

class B
{
public:
    int _b;
};

class C : public A,  private B
{
public:
    int _c;
};

C c;
c._c = 10;
c._a = 20;
    
B* b = (B*)(&c);
b->_b = 30;


Сосбственно вопрос: куда должен указывать указатель b?
У меня результат на VC7.1 был корректный. Но есть такое подозрение что он наплевал на private наследование, а судя по логике должен был
указывать на самое начало объекта, т.е. на a. И последняя строка как бы должна была изменить _а на 30.
Re: Так ли это должно быть?
От: Lorenzo_LAMAS  
Дата: 09.02.04 13:08
Оценка:
Про это здесь писали Павел Кузнецов и Андрей Тарасевич — такой каст работает через закрытое наследование и работает правильно.
Of course, the code must be complete enough to compile and link.
Re[2]: Так ли это должно быть?
От: Denwer Россия  
Дата: 09.02.04 13:17
Оценка:
Здравствуйте, Lorenzo_LAMAS, Вы писали:

L_L>Про это здесь писали Павел Кузнецов и Андрей Тарасевич — такой каст работает через закрытое наследование и работает правильно.


Через поиск не нашел, может ссылочка имеется?
И кстати такое преобразование правельно относительно стандарта?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.