C++-fout: definitie van impliciet verklaard

Ik schrijf dit programma met gekoppelde lijsten met C++

Toen ik het programma test, kreeg ik de foutmelding

linkedlist.cpp:5:24: fout: definitie van impliciet aangegeven ‘constexpr LinkedList::LinkedList()’
LinkedList::LinkedList(){

Hier is de code

linkedlist.h-bestand:

#include "node.h"
using namespace std;
class LinkedList {
  Node * head = nullptr;
  int length = 0;
public:
  void add( int );
  bool remove( int );
  int find( int );
  int count( int );
  int at( int );
  int len();
};

linkedlist.cpp-bestand:

#include "linkedlist.h"
#include <iostream>
using namespace std;
LinkedList::LinkedList(){
  length = 0;
  head = NULL;
}
/*and all the methods below*/

help.


Antwoord 1, autoriteit 100%

Declareer de parameterloze constructor in het headerbestand:

class LinkedList {
{
....
public:
    LinkedList();
    ....
}

Je definieert het in het .cpp-bestand zonder het daadwerkelijk te declareren. Maar aangezien de compiler standaard zo’n constructor levert (als er geen andere constructor is gedeclareerd), geeft de fout duidelijk aan dat je een impliciet gedeclareerde constructor probeert te definiëren.


Antwoord 2

Om de constructor buiten de klasse te definiëren, moet je deze eerst in de openbare specificatie declareren en vervolgens buiten de klasse definiëren.

#include "node.h"
using namespace std;
class LinkedList {
  Node * head = nullptr;
  int length = 0;
public:
  LinkedList();
  void add( int );
  bool remove( int );
  int find( int );
  int count( int );
  int at( int );
  int len();
};
LinkedList::LinkedList(){
  length = 0;
  head = NULL;
}

Antwoord 3

U moet de constructor binnen de klasse declareren om de cunstructor buiten de klasse te definiëren. Anders zou je het in de klas zelf moeten definiëren. Je klas zou er zo uit moeten zien.

           #include "node.h"
            using namespace std;
            class LinkedList {
              Node * head = nullptr;
              int length = 0;
            public:
              LinkedList();
              void add( int );
              bool remove( int );
              int find( int );
              int count( int );
              int at( int );
              int len();
            };

Other episodes