2017-08-16 2 views
1

Nach diesem Lernprogramm (https://www.youtube.com/watch?v=gq2Igdc-OSI&index=52&list=PLAE85DE8440AA6B83) Ich habe 4 Fehler auf Visual Studio C++ 2017. 3 von ihnen sind das gleiche und wiederholen Sie einfach "Mutter": Basisklasse undefiniert in der Tochter.h-Datei. Der andere Fehler lautet: 'sayName' ist kein Mitglied von 'Daughter'. Hier ist der Code. Es ist ziemlich einfach, was ich das Programm drucken möchte ... Ich möchte es zwei Zeilen drucken von "Was machst du da?" Wenn Sie mir mit dieser Antwort helfen könnten, wäre das großartig. Vielen Dank. Für die Hauptdatei `# include "stdafx.h" #include #include "Daughter.h" #include "Mother.h" using namespace std;Basisklasse undefiniert. Fehler C2504

int main() 
{ 
    Mother pot; 
    pot.sayName(); 
    Daughter kettle; 
    kettle.sayName(); 
    int pause = 0; 
    cin >> pause; 
} 

Mother.h 
#ifndef MOTHER_H 
#define MOTHER_H 

class Mother 
{ 
public: 
    Mother(); 
    void sayName(); 

}; 

#endif 
Mother.cpp 
#include "stdafx.h" 
#include<iostream> 
#include"Daughter.h" 
#include"Mother.h" 
using namespace std; 

Mother::Mother() 
{ 
} 
void Mother::sayName() { 
    cout << "What are you doing there?" << endl; 

} 
Daughter.h 
#ifndef DAUGHTER_H 
#define DAUGHTER_H 

class Daughter:public Mother 
{ 
public: 
    Daughter(); 
}; 
#endif 
Daughter.cpp 
#include "stdafx.h" 
#include<iostream> 
#include"Daughter.h" 
#include"Mother.h" 
using namespace std; 

Daughter::Daughter() 
{ 
} 
+0

Verschieben Sie "#include" Mother.h "' in Daughter.h. – GAVD

Antwort

0

Wenn eine Klasse eine andere erbt, muss sie die Kopfzeile der übergeordneten Klasse in die Kopfzeile einschließen. In Ihrem Fall müssen Sie #include "Mother.h" an der Spitze der Tochterkopfzeile hinzufügen (nicht nur in der CPP-Datei). Der andere Fehler tritt wegen des ersten auf und die Korrektur sollte ihn lösen.

Wenn Sie die Vererbungssyntax class Daughter : public Mother schreiben, benötigt die Tochterklassendefinition aus verschiedenen Gründen Zugriff auf die Informationen zu ihrer übergeordneten Klasse. Eine davon ist die Information über geerbte Methoden, die Ihren zweiten Fehler verursacht haben.

+0

Vielen Dank für die Hilfe bei der Lösung meines Problems. Ist dies für alle Visual Studio-Projekte? Ich frage das, weil das Tutorial, das ich gesehen habe (https://www.youtube.com/watch?v=gq2Igdc-OSI&index=52&list=PLAE85DE8440AA6B83), das nicht gemacht hat. –

+0

@DarkChocolate Ich habe es überprüft und es gibt sogar einige Kommentare zu diesem Thema. Außerdem gilt dies für den gesamten C++ - Code, den Sie schreiben werden (auch wenn Sie nicht in Visual Studio sind). –

+1

Nochmals vielen Dank für die Hilfe bei der Lösung meines Problems. –

Verwandte Themen