C++ это объявление не содержит класс хранения или спецификатор типа
struct st1 {
string name[2];
bool active[2];
};
struct st2;
void init() {
struct st2 {
st1 tier1;
st1 tier2;
tier1";
}
};
Я создал структуру st1 и попытался дважды использовать её в структуре st2. Насколько мне известно, именно так и нужно их добавлять, но Visual studio 2019 показывает ошибку это объявление не содержит класс хранения или спецификатор типа на строчку tier1; (если написать, к примеру, tier1.name[0]="Имя"; или заменить все массивы на несколько переменных, то ничего абсолютно не поменяется).
Так же я пытался инициализировать структуру st2 вне функции, но результат оставался всё таким же.
Ответы (1 шт):
У вас в структуре st2 присутствует поле st2 скорее всего из-за этого возникают ошибки. Если я правильно вас понял, то функция init() была добавлена от безысходности, потому я ее убрал. В итоге, при написании структуры так:
#include <string>
struct st1 {
std::string name[2];
bool active[2];
};
struct st2 {
st1 tier1;
st1 tier2;
};
int main()
{
st2 c;
c.tier1.name[0] = "5";
}
ошибок не возникает и спокойно создается экземпляр структуры, который мы можем редактировать, я для примера поменял name[0] у tier1, вот что получилось после выполнения кода:
