在成员函数内部调用成员函数

时间:2019-04-15 23:05:20

标签: c++ c++11

我正在尝试创建一个成员函数,该成员函数需要四个输入,一个主列表,一个键和两个辅助列表。然后,它根据密钥将主列表分为两个辅助列表。

这是一本编程书籍,因此必须有一个成员函数。

我收到此错误:“->的基本操作数具有非指针类型'UnsortedType'。

这是引起问题的整个功能。

function A() {}

请注意,“ list1”和“ list2”是通过引用传递的UnsortedTypes,我认为这是问题的一部分。

我在做什么错了?

感谢您的时间。

2 个答案:

答案 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的引用。