У меня есть задание, в котором мне нужно перевести некоторый код Ada в код C ++, чтобы он был максимально похож на код Ada.Код Ады выглядит следующим образом:
type Shape is (Circle, Triangle, Rectangle);
type Colors is (Red, Green, Blue);
type Figure(Form: Shape := Circle) is
record
Filled: Boolean;
Color: Colors;
case Form is
when Circle =>
Diameter: Float;
when Triangle =>
Left_Side: Integer;
Right_Side: Integer;
Angle: Float;
when Rectangle =>
Side_1: Integer;
Side_2: Integer;
end case;
end record;
Я знаю, что могу использовать class
, но, судя по языку вопроса и личности учителя, я предполагаю, что он ищет struct
.Мне просто неясно, как создать логику, необходимую для разных случаев внутри struct
.Учитель очень внимателен, поэтому я предполагаю, что требуется минимальный объем памяти.
Я студент CSc, так что прости меня, если решение простое.Спасибо!
Обновление: итоговый ответ оказался проще, чем я думал.
enum Shape {Circle, Triangle, Rectangle};
enum Colors {Red, Green, Blue};
struct Figure {
bool Filled;
Colors Color;
Shape Form;
union {
float Diameter;
struct {
int Left_Side;
int Right_Side;
float Angle;
} tri;
struct {
int Side_1;
int Side_2;
} rect;
};
};
Как обычно, я обдумал это.Спасибо за ваш вклад!