运算符重载 - 动态对象分配问题

时间:2014-01-11 09:00:31

标签: c++ visual-studio-2010 dynamic operator-overloading

我有一个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;

+ = prototype看起来像这样:

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

它说"没有运算符+ =匹配这些操作数"。 如何使它工作?

2 个答案:

答案 0 :(得分:2)

在第二种情况下,您应该使用以下形式:

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

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

答案 1 :(得分:1)

您应该*取消引用它,然后使用运算符:

*qq1 += t1;

否则编译器会尝试将+=应用于指向QueueSorted的指针,该指针不适用。

相关问题