#include <iostream>
#include <conio.h>
using namespace std;
class _tels
{
public:
int a;
char c;
double d;
_tels(int a1,char c1,double d1)
{
a = a1;
c = c1;
d = d1;
}
_tels(){}
};
void main()
{
_tels *T = new _tels[6];
for(int i = 0;i < 6; ++i)
T = _tels(i,'a'+i,(i - 0.1));
_tels *tels = (_tels*)(2 + T);
cout << T->a << ' ' << T->c << ' ' << T->d << endl;
cout << tels->a << ' ' << tels->c << ' ' << tels->d << endl;
_getch();
delete[] T;
}
Присвоение указателю арифметического выражения
BYTE *db;
Выделяется память:
db=new BYTE[сумма sizeof() различных структур];
Затем указателю на структуру присваивается:
_tels *tels=(_tels*)(db+sizeof(_mystruc));
Вопрос: можно ли теперь использовать tels? Например вот так:
MessageBox(NULL,tels->marka,"АВТО",MB_OK);
Компилируется нормально (VC++ 6), однако при запуске программа аварийно завершается.
Или может есть другое решение?
как то так:
Код:
п.с. собирал в VS2008 express
п.с.с. и ещё... начинать название своего класса с '_' или "__" не оч. хорошо... так обычно обозначают макросы.
Вопрос закрыт.