我有这个功能:
void plusQueue(){
PrioQueue<int> *a = new PrioQueue<int>(2);
PrioQueue<int> *b = new PrioQueue<int>(2);
a->push(3);
b->push(5);
a->push(7);
b->push(2);
cout << "a"<<endl;
a->print();
cout << "b"<<endl;
b->print();
cout<<"Samenvoegen\n";
PrioQueue<int> *c = new PrioQueue<int>(4);
c = a + b;
c->print();
}
这一行:
c = a + b;
给出了一些问题。我收到这条消息:
main.cpp:71:13: error: invalid operands of types 'PrioQueue<int>*' and 'PrioQueue<int>*' to binary 'operator+'
我的模板类中有一个重载的运算符:
PrioQueue operator +(PrioQueue a) {
PrioQueue temp = *this;
T *bottom = a.getBottom();
T *top = a.getTop();
for (T *element = bottom; element < top; element++) {
temp.push(*element);
}
return temp;
}
我在这里做错了什么?
答案 0 :(得分:3)
出于某种原因,您正在动态分配对象,因此a
,b
和c
是指针。你不能添加指针。
如果你真的想保留指针,那么你需要尊重它们来访问对象:
*c = *a + *b;
并记得在完成对象后删除它们;你的代码泄漏就像漏洞一样。
更有可能的是,您希望对象是自动的:
PrioQueue<int> a(2);
PrioQueue<int> b(2);
// populate them
PrioQueue<int> c = a + b;
答案 1 :(得分:1)
也许是因为你说你得到的是PrioQueue而不是指针。
试试*a + *b