Вложенные структуры
Позвольте задать еще такой вопрос по структурам:
Пытаюсь создать структуру в котором было бы три подструктуры, но 3-я структура опредлена с отдельно .h файле.
Подобная попытка приводит к ошибке:
Ошибка C2079 "my_struct_3::my_struct_2_" использует не имеющую определения структуру struct "my_struct_2"
//Struct_3.h
#include "Struct_result.h"
struct my_struct_2;
struct my_struct_3
{
my_struct_2 my_struct_2_;
};
//Struct_result.h
#include "Struct_3.h"
struct my_result;
struct my_struct_3;
struct my_struct_1
{
int my_int;
};
struct my_struct_2
{
char my_char;
};
struct my_result
{
my_struct_1 my_struct_1_;
my_struct_2 my_struct_2_;
my_struct_3 my_struct_3_;
};
//main.cpp
#include "Struct_result.h"
#include "Struct_3.h"
int main()
{
}
Не понимаю, как правильно в итоге можно вложить все структуры в одну из разных .h файлов ?
Ответы (1 шт):
Смотрите: у вса структура 1 не зависит ни от чего - выносим ее в отдельный h. Структура 2 - тоже, ее тоже даем в отдельном h (или вместе со структурой 1).
Структура 3 зависит от структуры 2 - ее помещаем в свой файл с включением в него h2.
Результирующая зависит от всего - значит, она последняя в своем файле. Итого:
struct1.h
#pragma once
struct my_struct_1
{
int my_int;
};
struct2.h
#pragma once
struct my_struct_2
{
char my_char;
};
struct3.h
#pragma once
#include "struct2.h"
struct my_struct_3
{
my_struct_2 my_struct_2_;
};
struct_res.h
#pragma once
#include "struct1.h"
#include "struct2.h"
#include "struct3.h"
struct my_result
{
my_struct_1 my_struct_1_;
my_struct_2 my_struct_2_;
my_struct_3 my_struct_3_;
};
struct.cpp
#include "struct_res.h"
int main() {}
Но можно и прощзе: собрать всё в один
struct_res.h
#pragma once
struct my_struct_1
{
int my_int;
};
struct my_struct_2
{
char my_char;
};
struct my_struct_3
{
my_struct_2 my_struct_2_;
};
struct my_result
{
my_struct_1 my_struct_1_;
my_struct_2 my_struct_2_;
my_struct_3 my_struct_3_;
};
Главное - отсортировать объявления топологически.