从List*到int的转换无效

Invalid conversion from List* to int

本文关键字:转换 无效 int List      更新时间:2023-10-16

我创建了一个链表:struct Node和list class,并在我的主方法中使用它,

#include "Lists.cpp"
#include <cstdlib>
using namespace std;
int main(){

    Lists l = new Lists(1);
    l.add(2);
    l.add(3);
    l.add(4);
    l.add(5);

    system("pause");
    return 0;
        }

,但它会产生一个错误,说"从List*到int的无效转换"。我对课外活动的使用是否正确?如何解决这个问题,我有点困惑。

#include <cstdlib>
#include <iostream>
using namespace std;
struct Node{
       int data;
       Node *next;       
       Node(int i){
                data = i;
                next = NULL;
                }
       };
class List{
      Node *head;

      public:
      List(int i){
               head = new Node(i);
      }
      void addToHead(int i){
          Node *temp = new Node(i);
          temp->next = head;
          head = temp;
           }
      void add(int i){
                Node *currNode = head;
                while(currNode!= NULL){
                        if(currNode->next == NULL){
                          currNode->next = new Node(i);
                          break;         
                                }
                         else{
                          currNode = currNode-> next;      
                              }   
                                 }
                }
      void deleteNode(int i){
           Node *currNode = head;
           Node *prevNode = NULL;
           while(currNode!=  NULL){
                             if(currNode->data == i) {
                             if(prevNode== NULL){
                                           head = head->next;
                                           }                  
                              else{
                                   prevNode->next = currNode->next;
                                   }                                
                              }
                              prevNode = currNode;
                              currNode =  currNode -> next;                            
                             }
           }
      void insert(int position, Node *n){
           Node *currNode= head;
           Node *prevNode = NULL;
           for(int counter = 0; counter>= position && currNode!= NULL; counter++){
                   if(counter==position){
                              Node *temp = currNode;
                              n->next  =  currNode;
                              prevNode->next= n;                              
                              }                  
                   prevNode = currNode;
                   currNode = currNode-> next;
                   }
           }
      void traverse(Node *node){
           if(node!=NULL){
           cout<<  node-> data  <<endl;
           traverse(node->next);
                          }
           }
      };
Lists l = new Lists(1);
应:

Lists *l = new Lists(1);

new提供一个指针。

您得到该特定错误的原因是,如果转换链Lists * -> int -> Lists有效,则该行将有效。由于构造函数的关系,第二个是有效的,而第一个则不是。

在哪一行出现上述错误?乍一看,Lists l = new Lists(1);已经错了:Lists* l = new Lists(1);应该是正确的。

但是这个错误和你提到的不一致。还要注意,您正在定义List并尝试使用Lists

这是你要编译的代码吗?

如果您想要动态分配List,请使用List *l = new List(1);std::shared_ptr<List> l = make_shared<List>( 1 );

List l(1);,如果你想要一个列表自动存储时间

注意名称,在类定义中使用List,在主函数中使用Lists。