错误2440无法转换为' int'到节点'

时间:2014-08-23 13:27:58

标签: c++ linked-list

好的,所以我正在完成一项学校作业。我找到了这个程序,我想用它来帮助我理解链表系统的工作原理。该特定程序应该创建链表,然后要求用户输入x和y对中的“点”。它将每个“点”存储在列表中的节点中,然后应该能够将它们全部打印出来。当我尝试编译它时,我得到2个错误,它告诉我,我无法从'int'转换为'node',我不知道为什么会这样说。看起来语法与书中的相同,所以我必须错过一个小细节。

另一方面,这个程序是我发现的一个随机的东西作为一个例子,所以如果可能的话,任何人都可以填写我如何让它在那里结束x和y coords吗?在评论中写道,它仍然需要完成。

以下是完整的错误消息:(错误发生在第44行和第67行,两行都表示“newNode-> info = input;”)

错误1错误C2440:'=':无法从'int'转换为'node *'

#include <iostream>
#include <list>
#include <cassert>
#include <ostream>



using namespace std;

struct node
{
node *info;
node *link;
int x, y; 
};

node* getXandY();

int main()
{
return 0;
}//end main

node* getXandY()
{
node *newNode, *first, *last; 

int input;
int count = 0;

cout << "Enter as many points as you like: (x,y)" << endl;
first = NULL;

do 
{
    //x integers
    cout << "Enter an X value: ";
    cin >> input;//read info
    int x = input; //store info (x) into input

    newNode = new node();//allocate memory for the type node
    assert(newNode != NULL);//terminate program is no memory space

    newNode->info = input;//copy value into input
    newNode->link = NULL;

    if (first == NULL)
    {
        first = newNode;
        last = newNode;
    }
    else
    {
        last->link = newNode;
        last = newNode;
    }


    //y integers
    cout << "Enter an Y value: ";
    cin >> input;//get info
    int y = input;//store in for (y) into input

    newNode = new node;//allocate memory for the type node
    assert(newNode != NULL);//terminate program is no memory space

    newNode->info = input;//copy value into input
    newNode->link = NULL;

    if (first == NULL)
    {
        first = newNode;
        last = newNode;
    }//end if
    else
    {
        last->link = newNode;
        last = newNode;
    }//end else 
}//end do
while (input != 999);


for (int i = 0; i < count; i++)
{
    cout << "("  /*place code here x value <<*/  "," << /*place code here y value <<*/   ")" <<endl;    
}//end for
getchar(); 
}

1 个答案:

答案 0 :(得分:0)

程序错了,毫无意义。

至于错误,它发生在像这样的语句中

newNode->info = input; 

数据成员info的类型为node *。查看信息的定义

node *info;

input的类型为int

int input;

因此,编译器无法将类型为int的对象分配给类型为node *的对象。此外,变量输入是局部变量。所以在任何情况下这个代码都没有意义。

我会按以下方式定义列表

class list
{
public:
    typedef size_t size_type;
    typedef std::pair<int, int> value_type;

private:
   struct node
   {
      node *next;
      std::pair<int, int> point; 
   };
   node *head = nullptr, *tail = nullptr;
   size_type sz = 0;     

public:
   // Some special member functions and other methods as for example push_back or push_front
   size_type size() const { return sz; }
   //...
};