將每個Get的更改為以下形式:double Get*()
更改為:void get *(double & amp;Val)表單
形式1比較常見,構造函數有問題。只給三分。
另外,tri.h中每個函數後面不要加“{}”雖然括號裏沒有語句,但是也表示函數體。
它與tri.cpp中的函數定義構成了壹個重定義。
根據妳的代碼已經修改過了(#包含“Tri.h”註釋,可以在壹個文件中編譯,但是在多個文件中編譯時註釋會被取消):
班級?三角形?{
雙倍?s,ci,a,b,c;
雙倍?x1,y1,x2,y2,x3,y3;
公共:
三角形(雙?x1=0,double?y1=0,double?x2=0,double?y2=0,double?x3=0,雙精度?y3 = 0);
~三角形()?{}?//?什麽都沒有?去哪?去吧。
雙倍?GetA();?
雙倍?GetB();
雙倍?GetC();?
雙倍?GetCi();
雙倍?GetS();
雙倍?show();
};
//?以上存款為Tri.h
# include & ltiostream & gt
# include & ltcmath & gt
//?#包括“Tri.h”
使用?命名空間?std
//?三角形::三角形(雙?x1=0,double?y1=0,double?x2=0,double?y2=0,double?x3=0,雙精度?y3=0)?{
三角形::三角形(雙?x1,?雙倍?y1,?雙倍?x2,雙?y2,?雙倍?x3,?雙倍?y3)?{
這-& gt;x1?=?x 1;
這-& gt;x2?=?x2;
這-& gt;x3?=?x3;
這-& gt;y1?=?y 1;
這-& gt;y2?=?y2;
這-& gt;y3?=?y3;
GetA();
GetB();
GetC();
GetCi();
GetS();
}
雙倍?三角形::GetA()?{
回歸?a = sqrt((x2-x3)*(x2-x3)+(y2-y3)*(y2-y3));
}
雙倍?三角形::GetB()?{
回歸?b = sqrt((x 1-x3)*(x 1-x3)+(y 1-y3)*(y 1-y3));
}
雙倍?三角形::GetC()?{
回歸?c = sqrt((x 1-x2)*(x 1-x2)+(y 1-y2)*(y 1-y2));
}
雙倍?三角形::GetCi()?{
回歸?ci = a+b+c;
}
雙倍?三角形::GetS()?{
雙倍?p?=?(a+b+c)/2;
回歸?s = sqrt(p *(p-a)*(p-b)*(p-c));
}
雙倍?三角形::show()?{
cout & lt& lt"邊長ab = " < & ltc & lt& ltendl
cout & lt& lt"邊長BC = " < & lta & lt& ltendl
cout & lt& lt"邊長AC = " < & ltb & lt& ltendl
cout & lt& lt"三角形周長= "
cout & lt& lt"三角形面積= " < & lts & lt& ltendl
}
//?以上另存為Tri.cpp
# include & ltiostream & gt
# include & ltcmath & gt
//?#包括“Tri.h”
使用?命名空間?std
int?main()?{
三角形?Tri(0,?0,?3,?0,?0,?4);
tri . show();
回歸?0;
}
//?上述存款為Exp.cpp
順便說壹下,您的原始Get的所有參數都與成員變量同名。例如:
作廢?三角::GetA(double?a){
a = sqrt((x2-x3)*(x2-x3)+(y2-y3)*(y2-y3));
//?這是哪壹個?成員變量,函數參數?
}這裏的實際引用是函數參數上的壹個,所以:
這個函數不會修改成員變量!
想引用成員變量A,該怎麽做?
有兩種方法:
看了上面的代碼,妳應該已經知道了——使用這個指針,也就是this->;a
使用類名和範圍運算符(::),即Triangle::a: a。
您可以在三角形類的末尾添加test()。
作廢?測試(雙?a=0)?{
cout?& lt& lt?答?& lt& lt?endl
cout?& lt& lt?這-& gt;答?& lt& lt?endl?
cout?& lt& lt?三角::a?& lt& lt?endl
}並撥打您的主要電話:
tri . test();看看結果對不對。