способ создать узел с помощью класса - PullRequest
0 голосов
/ 15 января 2019
    //This is class for Linked list 
    class SinglyLinkedListNode {
        public:
            int data;
            SinglyLinkedListNode *next;

            SinglyLinkedListNode(int node_data) {
                this->data = node_data;
                this->next = nullptr;
            }
    };



      SinglyLinkedListNode*    insertNodeAtHead(SinglyLinkedListNode* head, int key  )
        {
            SinglyLinkedListNode* newNode = &SinglyLinkedListNode(key);


           /*1st way of creating a node sing a class constructor 

            error(i got for this) :error: taking address of temporary [-fpermissive]
           */






           SinglyLinkedListNode* newNode =  new(SinglyLinkedListNode );//2nd way of creating a node 
            newNode->data=key;
            newNode->next=NULL;//following error i got by second method


 /*solution.cc:59:66: error: no matching function for call to ‘SinglyLinkedListNode::SinglyLinkedListNode()’
        SinglyLinkedListNode* newNode =  new(SinglyLinkedListNode );//2nd way of creating a node
                                                                  ^
solution.cc:10:9: note: candidate: ‘SinglyLinkedListNode::SinglyLinkedListNode(int)’
         SinglyLinkedListNode(int node_data) {
         ^~~~~~~~~~~~~~~~~~~~
solution.cc:10:9: note:   candidate expects 1 argument, 0 provided
solution.cc:5:7: note: candidate: ‘constexpr SinglyLinkedListNode::SinglyLinkedListNode(const SinglyLinkedListNode&)’
  */

    }

1 Ответ

0 голосов
/ 15 января 2019

Когда вы пишете новый (SinglyLinkedListNode);вы создаете объект типа SinglyLinkedListNode в куче, и компилятор попытается вызвать конструктор по умолчанию для этого объекта, но у класса нет конструктора по умолчанию.Если вы должны были написать новый SinglyLinkedListNode (6);компилятор сможет вызвать единственный имеющийся у вас конструктор, который принимает параметр int.Я предполагаю, что это работало как структура, а не как класс, потому что структура не имела CTOR, и поэтому компилятор смог создать для нее CTOR по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...