【发布时间】:2015-02-15 03:11:27
【问题描述】:
我有一个名为 OrderedList 的模板类,它采用原始数据类型并将其从最小到最大排序到一个列表中。我试图重载加法运算符以允许将两个列表合并到一个 OrderedList 中。我希望该方法返回一个新的 OrderedList 对象,但出现错误 这是我的 OrderedList + 运算符方法的代码。我还没有测试过这个方法的逻辑,所以我假设有一些错误。我目前只是试图让 + 运算符合并数组并返回一个新对象
template<class mytype>
OrderedList<mytype>& OrderedList<mytype>::operator+ (const OrderedList<mytype>& a)
{
int size = a.size() + count;
int i=0, j=0, k=0;
OrderedList<mytype> *newList = new OrderedList<mytype>(size);
while (i < a.size() && j < count) {
if (a[i] <= list[j]) {
newList[k] = a[i];
i++;
} else {
newList[k] = list[j];
j++;
}
k++;
if (i < a.size()) {
for (int p = i; p < a.size(); p++) {
newList[k] = a[p];
k++;
}
} else {
for (int p = j; p < count; p++) {
newList[k] = list[p];
k++;
}
}
}
return newList;
}
【问题讨论】:
-
您分配一个新列表,然后返回一个指向它的指针。但是您的函数类型希望您返回一个引用。加号运算符应返回该类型的新实例。在函数中创建您的类的实例,添加两个列表并返回新实例。
标签: c++ arrays sorting overloading