class Point{
public:
Point(int xx,int yy){
x = xx;
y = yy;
}
private:
int x,y;
};
class Triangle:public Point{
public:
Triangle(Point p1,Point p2,Point p3):p1(p1),p2(p2),p3(p3){}
}
private:
Point p1;
Point p2;
Point p3;
};
上面兩個類的定義在兩個頭文件中,在main函數中包括
#include
#include
#include "Point.h"
#include "triangle.h"
using namespace std;
int main(){
Point point(7, 11);
Point p1(1,1), p2(5,1), p3(1,4);
Triangle triangle(p1, p2, p3);
system("pause");
return 0;
}
錯誤是:triangle.h [Error] no matching function for call to 'Point::Point()'
這是什麼原因?
Triangle(Point p1,Point p2,Point p3): Point(oo,xx), p1(p1),p2(p2),p3(p3){}
基類沒有無參構造函數,需要指定使用基類的哪個構造函數。
話說 三角形類從點類派生, 著實有些個蛋疼啊。。。樓主需要注意LSP原則