簡體   English   中英

將一個類中的對象用作另一個類的對象C ++

[英]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 Triangle(){}添加默認構造函數
  • 修改Penta類的默認構造函數為: Penta() : TriPart(10,10) {}

我還建議初始化所有變量,例如

int height{ 0 };
int base{ 0 };

最后但並非最不重要的一點是,我建議讀一本關於類及其構造函數的不錯的C ++書。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM