Fehler: keine ‘ member-Funktion deklariert in der Klasse "

Ich versuche, erstellen Sie eine Klasse, die eine virtuelle Funktion, die ich gerne Erben in zwei untergeordnete Klassen.

Ich weiß, dass einige Leute bereits gefragt, diese (hier und es zum Beispiel), aber ich konnte nicht die Antwort zu verstehen.

Also machte ich ein Vereinfachtes Beispiel-code von dem, was ich versuche :

//Mother .h file 

#ifndef _MOTHER_H_
#define _MOTHER_H_
#include <iostream>

class Mother
{
 protected :
   std::string _name;
 public:
   Mother(std::string name);
   ~Mother();
   virtual std::string getName() = 0; 
};

#endif

//Mother .cpp file

#include "Mother.h"

Mother::Mother(std::string name)
{
  this->_name = name; 
}

Mother::~Mother()
{
}


//Child.h file

#ifndef _CHILD_H_
#define _CHILD_H_
#include "Mother.h"

class Child : public Mother
{
 private : 
   std::string _name;
 public:
   Child(std::string name);
   ~Child();
};

#endif


//Child .cpp file

#include "Mother.h"
#include "Child.h"

Child::Child(std::string name) : Mother(name)
{
  this->_name = name;
}

Child::~Child()
{
}

std::string Mother::getName()
{
  return this->_name;
}

Hier ist meine main.cpp Datei :

//Main.cpp file
#include "Child.h"

int main()
{
   Child l("lol");

   std::cout << l.getName() << std::endl;

   Mother& f = l;

   std::cout << f.getName() << std::endl;

   return 0;
 }

Hier ist, was der compilator sagt :
(kompilieren mit g++ *.cpp -W -Wall -Wextra -Werror)

main.cpp: In function int main()’:
main.cpp:5:9: error: cannot declare variable l to be of abstract typeChild
In file included from main.cpp:1:0:
Child.h:8:7: note:   because the following virtual functions are pure within Child’:
In file included from Child.h:6:0,
             from main.cpp:1:
Mother.h:14:23: note:   virtual std::string Mother::getName()

Was mache ich falsch ?

(sorry, wenn ich einige Deutsch Fehler, ich bin kein native speaker).

Sie haben nicht überschrieben, die rein virtuelle Funktion getName() in der Kind-Klasse.
Sie implementieren müssen, um getName () - Funktion in Ihrem Kind Klasse.
Warum ist getName() rein?
Kinder nicht wirklich Erben von Müttern in der OOP-Welt.
Die Namen von include-guards verwenden reservierte Bezeichner, stackoverflow.com/questions/228783/...

InformationsquelleAutor trolologuy | 2014-01-21

Schreibe einen Kommentar