Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > Как разложить anonymous union и struct?


Автор: WaNdeR 12.12.2004, 10:54
Есть задача, перенести программу с Винды на Линух.
и никак не могу разделать следующую вещь:


class vec
{
.....
.....

public:
union
{
float v[3];
struct {float x,y,z;};
};

};

class qu
{
.....
.....

public:
union
{
float q[4];
struct {float x,y,z,w;};
struct {vec v; float w;};
};

};


на все это компилятор g++ ругается:

vec.h:667: warning: ISO C++ prohibits anonymous structs
vec.h:667: member vec qu::<anonymous union>::<anonymous struct>::v' with constructor not allowed in anonymous aggregate
vec.h:667: member vec qu::<anonymous union>::<anonymous struct>::v' with copy assignment operator not allowed in anonymous aggregate
vec.h:667: declaration of `float qu::<anonymous union>::<anonymous struct>::w'
vec.h:666: conflicts with previous declaration `float qu::<anonymous union>::<anonymous struct>::w'
vec.h:667: duplicate member `qu::<anonymous union>::<anonymous struct>::w'
vec.h:667: member `vec qu::<anonymous union>::<anonymous struct>::v' with constructor not allowed in union
vec.h:667: member `vec qu::<anonymous union>::<anonymous struct>::v' with copy assignment operator not allowed in union

Может кто уже встречался с подобной задачей.... очень надо найти решение.

Автор: Mad 12.12.2004, 12:30
надо
Код

union
{
float q[4];
struct {float x,y,z,w;} s1;
struct {vec v; float w;} s2;
} u1;


и соответственно подправить обращения

Автор: WaNdeR 12.12.2004, 23:37
А если у меня там переопределены арифметические функции, в классе?
да и там получается, что вкладки по классам трех четырех уровней. Сильно запутанно smile
Больше ничего нельзя придумать чтобы заставить его работать? а то там столько изменений.... smile

Автор: Hroft 24.12.2004, 15:23
Объединение в public... кошмар.
А как ты вообще собирался обращаться к членам этих объединений? И что значит
Цитата(WaNdeR @ 12.12.2004, 23:37)
переопределены арифметические функции, в классе
?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)