[英]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.