运算符 [] 不匹配
No Match for Operator[]
所以我正在尝试使用排序函数(类似于气泡(并将一个对象传递给它。如果该对象更大(按字母顺序(,则切换然后返回 true 并将其与前面的 switch 切换。尽管在 mySort()
内部的 if 语句中,我不断收到错误,该语句说"与 arr[j] 中的运算符 [] 不匹配",但据我了解,我正在传递一个对象数组,对吗?为什么会发生这种情况,我该如何解决?
这是驱动程序
#include <iostream>
#include <fstream>
#include <string>
#include "phoneEntry.h"
using namespace std;
void mySort(PhoneEntry &arr, int size)
{
bool inOrder = false;
string temp;
for (int i = size - 1; i > 0 && !inOrder; i--)
{
inOrder = true;
for (int j = 0; j < i; j++)
{
if(arr.alphaGreater(arr[j]))
{
inOrder = false;
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
};
int main()
{
const int MAXNUM = 500;
PhoneEntry entry[MAXNUM];
ifstream filezilla;
filezilla.open("phone.txt");
int count = 0;
if(filezilla)
{
while(count < MAXNUM && entry[count].readEntry(filezilla))
{
count++;
mySort(entry[count], count);
}
for(int i = 0; i < count; i++)
{
entry[i].writeEntry(cout) << endl;
}
}
else
{
cout << "404" << endl;
}
return 0;
}
电话输入标头
电话号码标头
对文本进行排序 (http://pastebin.com/HE8Rsmbg(
-
arr
应该是一个数组,而不是一个引用,就像这样PhoneEntry arr[]
-
您应该将整个数组传递给排序,而不是单个元素,如下所示:
mySort(entry, count);
除此之外,您的代码看起来正常。
我应该补充一点,这不是一个C++的解决方案:在C++中管理数组的首选方法是使用标准库中的std::vector<T>
容器。矢量的好处是你不需要"在侧面"传递它们的大小。
您可以使用
指针表示法 - mySort(PhoneEntry * arr, int size)
或数组表示法 - mySort(PhoneEntry arr[], int size)
。
如果要在调用函数时传递整个数组,只需执行mySort(entry, count)
即可。
arr
不是方法中的数组。
将方法签名更改为
void mySort(PhoneEntry *arr, int size)
并调用您的方法
mySort(entry[count], count);
据我了解,我正在传递一个对象数组,对吗?
不,您不是在传递对象数组。您正在传递对位于 entry
数组中第 count
个位置的 PhoneEntry
元素的引用(由函数标头中的 &
指示(。您可能的意思是mySort
标头中的PhoneEntry* arr
- 这将需要一个指向PhoneEntry
实例的指针,并且由于数组的名称可以解释为指向该数组的第一个元素的指针,因此您可以简单地将entry
作为第一个参数传递给mySort
。
替换这个:
void mySort(PhoneEntry * arr, int size)
取而代之的是:
// Wrong
mySort(entry[count], count);
。执行以下操作之一(视情况而定(:
// Always passes the start of the array, "entry[0]":
mySort(entry, count);
// Passes a pointer to a particular entry, onwards:
mySort(&entry[count], count);
- 在使用累加时,C++中的运算符+不匹配
- 我在 .h 中有一个枚举类,并且在.cpp错误中有一个运算符重载:与"运算符<<不匹配
- 为什么我收到错误:"运算符<<不匹配?
- 不显示匹配运算符
- 映射迭代器与运算符不匹配
- 与"运算符<<"C++不匹配
- 与"运算符>>"不匹配(操作数类型为"QDataStream"和"QJsonObject")
- 与标准中的"运算符<<"不匹配
- 运算符不匹配*=
- 不断收到错误" 与"运算符>>不匹配";
- 编译我的 3 个文件时,我收到错误,说"运算符="不匹配
- C++ 模板与运算符<不匹配
- 与"运算符="不匹配
- 代码块编译错误与运算符<<不匹配
- 错误:运算符 [] 不匹配。在比较列表中的 int 和 int 时<int>,
- 解决错误:运算符 [] 不匹配
- 错误:与"运算符>>"不匹配(操作数类型为"std::istream
- 与"运算符[]"不匹配(操作数类型为"std::unique_ptr<std::vector<int> >"和"int")
- 错误:与“运算符 []”不匹配
- C++ 设置:不匹配 - 运算符