[英]Using an object from a class as an object for another class c++
我正在編寫C ++程序,並且必須使用一個類的實例作為另一個類的私有成員。 我需要用作成員實例的類的代碼如下:
class Triangle
{
public:
Triangle(int _height, int _base){ set(_height, _base); }
//constructor
void set(int _height, int _base){ height = _height; base = _base; }
int area(){ return ((height*base)/2); }
int perimeter(){ return (2*(sqrt(((base/2)*(base/2)) +. (height*height))) + base); }
private:
int height;
int base;
};
這是將上述實例用作私有成員的類的定義:
Class Penta
{
Public:
Penta(int b );
Penta(){ TriPart.set(10, 10); }
Private:
Triangle TriPart;
};
當我編譯上面的代碼時,編譯失敗並顯示以下錯誤:
error: no matching function for call to 'Triangle::Triangle()'
如果您能幫助我,我非常感謝。
代碼中有幾個問題。 但這很容易解決。
如果您要編譯代碼,那么編譯器將已經告訴您了,出了什么問題。
因此,在代碼的第一部分中,周長的計算中有一個“”。 在“ +”之后。 另外,您要小心。 您正在計算中創建雙精度值,然后以整數形式返回。 那不管用。
在第二個定義中,“類”,“公共”和“私人”一詞大寫。 您需要使用正確的關鍵字。 您的Penta(int b)構造函數沒有正文。 而且該類也沒有數據成員,您可以在其中分配它,
然后,如編譯器所報告的那樣,您的Triangle類沒有默認構造函數,例如Triangle(){}
。 Penta的默認構造函數需要調用Triangle的某些構造函數,但是沒有。
有幾種可能的解決方案:
Triangle(){}
添加默認構造函數 Penta() : TriPart(10,10) {}
我還建議初始化所有變量,例如
int height{ 0 };
int base{ 0 };
最后但並非最不重要的一點是,我建議讀一本關於類及其構造函數的不錯的C ++書。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.