2014-01-11 24 views
0

我有一個類QueueSorted,它存儲了一個對象(類Task)的排序列表。運算符重載 - 動態對象分配問題

QueueSorted q1; 

qq1+=t1; // adding object t1 to the list 
qq1+=t2; 
qq1+=t3; 

以上代碼工作

此代碼是不是:

QueueSorted *q1 = new QueueSorted(); 

qq1+=t1; 
qq1+=t2; 
qq1+=t3; 

+ =原型是這樣的:

Queue & operator+=(const Task & task); 

它說: 「沒有運營商+ =這些操作數相匹配」。 如何使它工作?

+1

這與動態分配BTW無關。 – juanchopanza

回答

2

在第二種情況下,你應該使用以下幾種形式:

qq1->operator+=(t1); 
qq1->operator+=(t2); 
qq1->operator+=(t3); 

(*qq1) += t1; 
(*qq1) += t2; 
(*qq1) += t3; 
+0

注意:第一個是可能的,但它忽略了操作員使代碼更易讀的原則。 – deepmax

+0

@MM。是的,當然。我已經寫了它來強調我們需要在這種情況下使用指針解引用運算符。 – vershov

1

您應該取消對它的引用由*,然後使用操作:

*qq1 += t1; 

否則編譯試圖將+=應用於指向QueueSorted wh的指針ich不適用。