gpt4 book ai didi

C++ 模板运算符重载不起作用

转载 作者:行者123 更新时间:2023-11-27 23:14:37 26 4
gpt4 key购买 nike

我有这个功能:

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;
}

我做错了什么?

最佳答案

出于某种原因,您正在动态分配对象,因此 abc 是指针。您不能添加指针。

如果你真的想保留指针,那么你需要遵循它们来访问对象:

*c = *a + *b;

并记得在完成处理后删除对象;你的代码像漏水的东西一样泄漏。

更有可能的是,您希望对象是自动的:

PrioQueue<int> a(2);
PrioQueue<int> b(2);

// populate them

PrioQueue<int> c = a + b;

关于C++ 模板运算符重载不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17215139/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com