这就是问题所在,我试图重载operator + =()并且我认为我成功地这样做了,但是当我调用foo + = bar时,编译器声明我有操作符+的无效操作数()。有谁知道为什么会发生这种情况?代码示例如下:
Array& Array::operator+=(Recipe& recipe){ //Adds a Recipe object to Array object and orders
int i = 0;
if (size == MAX_RECIPES)
return;
while(i!=size && recipe.getName() > recipes[i]->getName()) //Order
i++;
for(int j=size; j>i; j--) //Shift to fit new recipe
recipes[j] = recipes[j-1];
recipes[i] = &recipe;
size++;
return *this;
}
void UImanager::addRecipes(Array *arr){ //Adds multiple Recipe objects to a temporary Array object
int i;
cout << endl << "Enter the number of recipes you wish to add: ";
cin >> i;
if(i<0)
return;
Array *tempArr = new Array;
while(i){
Recipe *tempRecipe = new Recipe;
getRecipeData(tempRecipe);
tempArr += tempRecipe;
i--;
}
实质上,Array类是Recipe对象的集合类,UImanager类是用户交互发生的地方。
答案 0 :(得分:2)
您的变量android:src
的类型为tempArr
但是您应该将Array *
应用于operator+()
类型的对象而不是指针(对于配方相同):
Array
注意:如果要在指向*tempArr += *tempRecipe;
的指针上使用operator+()
,则可以将参数更改为指针而不是引用,但不能对Recipe
执行相同操作,因为{此表单中的{1}}必须应用于对象。否则你必须明确地调用它:
Array
在任何一个case参数中都应该是operator+=()
或tempArr->operator+=( *tempRecipe );
,因为你不希望修改对象。