Возникает ошибка C2039 там где не должна
есть 2 структуры данных, одна нужна для упрощения второй
struct vershina
{
vershina* LinkStraight; // указатель на следующий элемент массива (пока не использ.)
connect svyazi[50]; // массив указателей - связей
int id;
string name;
unsigned int valid_connects = 0;//сколько инициализированно связей
};
//структура связи, хранит указатель на связанный элемент и вывод при переходе
struct connect
{
string out; //что выходит
vershina* connect; // с чем соединено
};
При попытке обратиться к ним в main вот так возникает ошибка С2039
int valid_connects;
int findIndex;
vershina *toPTR;
vershina list[100];
string transout;
.
.
.
list[findIndex].svyazi[valid_connects].connect = toPTR;
list[findIndex].svyazi[valid_connects].out = transout;
svyazi: не является членом "vershina"
Не понимаю где ошибся, т.к. вроде обращаюсь сначала к элементу массива, затем к полю данных этого элемента, которое тоже массив, к номеру в нем и к полю данных элемента 2 массива. Структура запутанная, но не противоречивая.
Ответы (1 шт):
На момент определения struct vershina, идентификатор connect ещё не определён. Чтобы решить Вашу проблему необходимо перенести определение struct connect перед struct vershina. Но и этого будет недостаточно, потому что в struct connect используется тип vershina. Поэтому перед struct connect необходимо сделать предварительное объявление типа vershina. Делается это так:
struct vershina;
Всё вместе будет выглядеть так:
struct vershina;
struct connect
{
string out;
vershina* connect;
};
struct vershina
{
vershina* LinkStraight;
connect svyazi[50];
int id;
string name;
unsigned int valid_connects = 0;
};