背景:友元 前向声明
源代码:#include <iostream>using namespace std;
//class Car;
class Boat{private: float Weight; public: Boat(float weight = 0) { Weight = weight; } friend float totalWeight(Boat &a,Car &b);};
class Car{private: float Weight;public: Car(float weight = 0) { Weight = weight; } friend float totalWeight(Boat &a,Car &b); };
float totalWeight(Boat &a,Car &b){ float c; c = a.Weight + b.Weight; return c; }
int main(){ Boat aa(100.1); Car bb(200.2); cout << totalWeight(aa,bb) << endl; return 0;}
错误提示:syntax error : identifier 'Car' //语法错误:标识符Car'Weight' : cannot access private member declared in class 'Boat' //不能在类Boat中公然的访问私有成员
错误分析:Boat类和Cat类互相引用
研究结果(知识扩展):我在开始时没有加上前向声明class Car,所以导致错误。这个错误能在编译阶段查出来,是静态错误,语法错误。