Я получаю обе ошибки в одной строке. Мост * первый в классе Lan. Чего мне не хватает?
#include <stdio.h> #include <stdlib.h> #include <iostream> using namespace std; class Lan{ Bridge *first; Bridge *second; Host hostList[10]; int id; }; class Bridge{ Lan lanList[5]; }; class Host{ Lan * lan; int id; public: Host(int newId) { id=newId; } }; void main(){ return; }
Объявить Bridge до Lan
Bridge
Lan
#include <stdio.h> #include <stdlib.h> #include <iostream> using namespace std; class Bridge; class Lan{ Bridge *first; Bridge *second; Host hostList[10]; int id; }; class Bridge{ Lan lanList[5]; };
Отсутствует предварительное объявление для Bridge. В противном случае при компиляции Lan компилятор класса не знает, что такое Bridge*. Вы должны сообщить компилятору, что Bridge - это класс, который вы собираетесь определить позже. Вперед объявить его как class Bridge; до class Lan
Bridge*
class Bridge;
class Lan
Мост не существует, пока после объявления Lan. Вы должны заранее объявить Бридж. кроме того, Lan не будет компилироваться, потому что Host также не известен, и предварительное объявление не поможет, потому что компилятору нужно знать размер Host.
Bridge не определено в момент его использования.
вам нужно предварительное объявление, чтобы компилятор знал, что Bridge является допустимым именем класса. перед классом Lan напишите:
Просто поставьте class Bridge; перед объявлением класса Lan.