C++ C++;模板运算符重载不起作用
我有这个功能:C++ C++;模板运算符重载不起作用,c++,templates,operators,operator-overloading,C++,Templates,Operators,Operator Overloading,我有这个功能: 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"<&l
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();
}
给出了一些问题。我得到这个信息:
main.cpp:71:13: error: invalid operands of types 'PrioQueue<int>*' and 'PrioQueue<int>*' to binary 'operator+'
main.cpp:71:13:错误:“PrioQueue*”和“PrioQueue*”类型的操作数对二进制“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;
}
PrioQueue操作符+(PrioQueue a){
PrioQueue temp=*此;
T*bottom=a.getBottom();
T*top=a.getTop();
对于(T*element=bottom;element
我做错了什么?出于某种原因,您正在动态分配对象,因此
a
、b
和c
都是指针。不能添加指针
如果确实要保留指针,则需要遵从它们来访问对象:
*c = *a + *b;
记住,一旦你处理完这些对象,就要删除它们;你的代码像一个泄密的东西一样泄漏
更可能的情况是,您希望对象是自动的:
PrioQueue<int> a(2);
PrioQueue<int> b(2);
// populate them
PrioQueue<int> c = a + b;
PrioQueue a(2);
PrioQueue b(2);
//填充它们
PrioQueue c=a+b;
出于某种原因,您正在动态分配对象,因此a
、b
和c
都是指针。不能添加指针
如果确实要保留指针,则需要遵从它们来访问对象:
*c = *a + *b;
记住,一旦你处理完这些对象,就要删除它们;你的代码像一个泄密的东西一样泄漏
更可能的情况是,您希望对象是自动的:
PrioQueue<int> a(2);
PrioQueue<int> b(2);
// populate them
PrioQueue<int> c = a + b;
PrioQueue a(2);
PrioQueue b(2);
//填充它们
PrioQueue c=a+b;
可能是因为你说你得到的是一个前奏曲,而不是一个指针。
试试*a+*b
也许是因为你说你得到的是一个问答,而不是一个指针。
试试看*a+*b
你能用那样的广告指针吗?a、 b、c是指向PrioQueue
的指针,而不是PrioQueue
<代码>尝试*c=*a+*b你能像那样做广告吗?a、 b、c是指向PrioQueue
的指针,而不是PrioQueue
<代码>尝试*c=*a+*b代码>