我正在尝试创建一个成员函数,该成员函数需要四个输入,一个主列表,一个键和两个辅助列表。然后,它根据密钥将主列表分为两个辅助列表。
这是一本编程书籍,因此必须有一个成员函数。
我收到此错误:“->的基本操作数具有非指针类型'UnsortedType'。
这是引起问题的整个功能。
function A() {}
请注意,“ list1”和“ list2”是通过引用传递的UnsortedTypes,我认为这是问题的一部分。
我在做什么错了?
感谢您的时间。
答案 0 :(得分:1)
可以像使用原始对象一样使用引用。如果您通过引用传递某些内容,则可以仅使用.
代替->
void UnsortedType::SplitLists(UnsortedType list,
ItemType item,
UnsortedType& list1,
UnsortedType& list2){
ItemType whichItem;
int numItems = list.GetLength();
//Loop through all items in the list
for(int i = 0; i < numItems; i ++){
whichItem = list.GetNextItem();
try{
switch(whichItem.ComparedTo(item)){
case LESS:
case EQUAL:
if(list1.isFull()){//Error thrown on this line
throw std::string("List1 is full.");
return;
}
//add item to list1
list1.PutItem(whichItem);//Error thrown on this line
break;
case GREATER:
if(list2.isFull()){//Error thrown on this line
throw std::string("List2 is full.");
return;
}
//add item to list2
list2.PutItem(whichItem);//Error thrown on this line
break;
}
}
catch(std::string e){
std::cout << e << std::endl;
}
}
};
答案 1 :(得分:-1)
您传递的是引用而不是指针。
Type&type //参考 它的使用方式类似于type.do_smth()
Type * type //指针 就像type-> do_smth()//一样使用它,因为您必须先“取消引用”它。
通常,指针是引用的包装。指针持有对smth的引用。