我在同一行上遇到两个错误。 Bridge *首先在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;
}
答案 0 :(得分:4)
在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];
};
答案 1 :(得分:2)
您错过了Bridge
的前瞻性声明。否则,在编译Lan
类时,编译器不知道Bridge*
是什么。您应该告诉编译器Bridge
是一个您稍后要定义的类。转发在class Bridge;
class Lan
答案 2 :(得分:1)
在Lan类的声明之前放一个class Bridge;
。
答案 3 :(得分:1)
Bridge
在使用时尚未定义。
您需要一个前向声明,以便编译器知道Bridge
是一个有效的类名。在Lan
课程之前,写下:
class Bridge;
答案 4 :(得分:1)
在Lan声明之后,Bridge才存在。你应该向前宣布桥。除此之外,Lan不会编译因为Host也不知道,并且前向声明也无济于事,因为编译器需要知道Host的大小。