簡體   English   中英

C ++為一個類分配內存

[英]c++ Allocating memory for a class

我有這個課:

class myClass{
    public:
        myClass(string label);
        ~myClass();
        string myget();
        void myset(string label);

        void myadd(class2 * edge);
    private:
        string label;
        vector<class2 *> myList;
};

我想編寫一個檢查myClass類型的對象是否相等的函數:

 bool operator== (myClass& l,myClass& r)
{         

}

為了檢查這些對象的myList向量,我想復制l和r,對副本的向量進行排序,並檢查這些副本的排序向量是否相等。 但是我認為我無法復制l和r。 這是我為此寫的:

myClass x = new myClass("s1");
myClass y = new myClass("s2");


x = l;
y = r;
sort(x.myList.begin(),x.myList.end());
sort(y.myList.begin(),y.myList.end())
if( x == y)
    return true;
    else
    return false;

這段代碼給出了以下錯誤:錯誤:請求從'myClass *'到非標量類型'myClass'的轉換。

我嘗試制作x和y指針,但是也沒有用。 您能告訴我如何解決此代碼嗎?

提前致謝。

myClass x = new myClass("s1"); - here is the problem

運算符new返回一個指針。 因此,您可以存儲一個指針,或者只是在自動存儲設備上創建副本(通常稱為堆棧)

myClass x = myClass("s1"); - should be so (stack)
myClass *x = new myClass("s1"); - or so (heap)

您是否忘記將x和y聲明為指針?

myClass* x = new myClass("s1");
myClass* y = new myClass("s2");

假設您只需要在上課期間讓該班“上課”,則可以執行以下操作:

  myClass x("s1");

要么

  myClass x = myClass("s1");

如果您需要一個指向該類的指針,以便該函數可以將其傳遞回調用函數:

  myClass *x = new myClass("s1");

暫無
暫無

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

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