Всем привет. Давно не писал на C++, захотелось вспомнить этот язык. Накатал следующий класс.
plane.hpp
class Plane
{
public:
Plane(int planetype);
float *bodyx;
};
plane.cpp
#include "plane.hpp"
float bx[][6] = {{0, -5, -6, 0, 6, 5}, {1, 1, 1}};
Plane::Plane(int planetype)
{
cout << sizeof(bx[planetype]) << " " << sizeof(bx[planetype][0]) << " " << sizeof(bx[planetype]) / sizeof(bx[planetype][0]) << endl;
for(unsigned int k=0; k<sizeof(bx[planetype])/sizeof(bx[planetype][0]); k++)
{
bodyx[k] = bx[planetype][k];
cout << bodyx[k] << " ";
}
cout << endl;
}
main.cpp
#include "plane.hpp"
int main(int argc, char* args[])
{
Plane* player = new Plane(0);
cout << sizeof(player->bodyx) << " " << sizeof(player->bodyx[0]) << " " << sizeof(player->bodyx) / sizeof(player->bodyx[0]) << endl;
for(unsigned int k=0; k<sizeof(player->bodyx)/sizeof(player->bodyx[0]); k++)
{
cout << player->bodyx[k] << " ";
}
cout << endl;
}
Вывод:
24 4 6
0 -5 -6 0 6 5
8 4 2
0 -5
Ошибка сегментирования (стек памяти сброшен на диск)
То есть в конструкторе в массив благополучно перешли все 6 значений. А куда же по дороге делись 4 из них и что я делаю не так?