二进制表达式的操作数无效(&#39; ostream&#39;(又名&#39; basic_ostream <char>&#39;)和&#39; void&#39;)

时间:2016-10-29 05:32:57

标签: linked-list std iostream

我在大学里使用LinkedLists做了数据结构的作业,

做了代码,但编译器&#34; eclips&#34;显示一个名为的错误 描述资源路径位置类型

二进制表达式的操作数无效(&#39; ostream&#39;(又名&#39; basic_ostream&#39;)和&#39; void&#39;)LinkedLists.cpp / LinkedLists / src line 156 C / C ++问题

这是代码,那么这个问题是什么?我该如何解决?

谢谢^^

struct node {
    int StudentNumber;
    string name;
    node *link,*data;

    };

node *head,*newNode,*last;
string name;
int StudentNumber;

node* insert (){
            char a='n';
            cout<<"hello to linked lists insertion"<<endl;

            cout<<endl<<"please write your name : ";
            cin>>name;
            cout<<"please put the student number : ";
            cin>>StudentNumber;
            head=NULL;

            while(a!='n'||a!='N'){

                newNode = new node ;
                newNode->StudentNumber=StudentNumber;
                newNode->name=name;
                newNode->link=NULL;

                if (head==NULL)
                {
                    head=newNode;
                    last=newNode;

                }else {

                    last->link=newNode;
                    last=newNode;

                }//end else


                cout<<"please write your name : ";
                cin>>name;
                cout<<endl<<"please put the student number : ";
                cin>>StudentNumber;
                cout<<"Do you want to insert new nodes ? y for yes , n for no ";
                cin>>a;


            }//end while

            return head;
    }//end insert function


// adding nodes function

void add() {
    int j;
    cout<<"please choose your option for adding new node : 1 for add at the beginning , 2 for add at the end ";
    cin>>j;
    if (head!=NULL)
        {
    switch (j)
{
    // adding at the beginning
case 1 :
        newNode=new node;
        newNode->link=head;
        head=newNode;
        cout<<"please insert your node data : ";
        cout<<"Student Name : "<<newNode->data<<endl<<"and student number is : "<<newNode->StudentNumber;

    break;
    // at the end
case 2:
    newNode= head;
    while (newNode->link!=NULL)
    {
        newNode = newNode->link;

    }// end of while
    last= newNode;
    newNode = new node ;
    newNode->link=NULL;
    last->link=newNode;
    cout<<"please insert your node data : ";
    cout<<"Student Name : "<<newNode->data<<endl<<"and student number is : "<<newNode->StudentNumber;
    break; // end of case adding at the end


}
}else {cout<<"The list is empty";}

}// ending of the adding nodes function


// delete node function

void deletion () {
    int s;
    cout<<"please choose your option for deleting nodes : 1 for delete the first , 2 for delete the last node ";
            cin>>s;
switch (s) {
// delete the first node
case 1 :
    newNode = head;
    last=head->link;
    head=last;
    delete newNode;
    break;

    //delete the last node
case 2:
    newNode=head;
    last=head;
    while (newNode->link!=NULL)
    {
        last=newNode;
        newNode=newNode->link;
    }
    last->link=NULL;
    delete newNode;
    break;


}//end of the switch


}// end of delete nodes function




int main() {
    int m;
    cout<<"Welcome to LinkedLists Example"<<endl;
    cout<<"enter your choice number , 1 for inserting nodes to the list , 2 for adding nodes , 3 for deleting nodes ";
    cin>>m;
    switch(m) {
    case 1:
        cout<<insert();
        break;
    case 2:
        cout<<add();
        break;
    case 3:
        cout<<deletion();
        break;


    }

return 0;

}

1 个答案:

答案 0 :(得分:0)

main函数中,您有以下三行:

cout<<insert();
cout<<add();
cout<<deletion();

如果你看一下这些功能的原型:

node* insert ()
void add() 
void deletion()

现在我们可以看到问题所在。在insert案例中,您尝试将node*传递给coutcout不知道如何处理node*。同样,adddeletion正在将void传递给cout coutstring不知道如何处理。

有两种解决方案:

  1. insertadddelete内打包cout,然后将该字符串返回cout
  2. 从这些行中删除insert
  3. 我建议第二种解决方案。这对你的项目来说要简单得多,它不会破坏你计划用int main() { int m; cout<<"Welcome to LinkedLists Example"<<endl; cout<<"enter your choice number , 1 for inserting nodes to the list , 2 for adding nodes , 3 for deleting nodes "; cin>>m; switch(m) { case 1: insert(); break; case 2: add(); break; case 3: deletion(); break; } return 0; } 的返回值做的任何事情。你的主要功能如下:

        self.lineChartView.xAxis.labelTextColor = UIColor.white
        self.lineChartView.leftAxis.labelTextColor = UIColor.white
        self.lineChartView.rightAxis.labelTextColor = UIColor.white