Brauche Hilfe bei Vererbung

Cannily

Grünschnabel
Hallo zusammen,

ich versuche mich gerade an Vererbung.
Es gibt eine Aligator.hpp + .cpp die erbt die Reptile.hpp + .cpp welche die Animal.hpp + .cpp erbt.

Der Fehler ist im untersten Glied aber wohl bei allen gleich, da sie nahezu identisch sind - abgesehen von den Parametern und Namen.

Aligator.hpp
Code:
#ifndef ALIGATOR_HPP_
#define ALIGATOR_HPP_

#include <iostream>

class Aligator : public Reptile {               <-- FEHLERMELDUNG: error: expected class-name before '{' token 
	int numberOfTeeth;
public:
	Aligator(int numberOfTeeth, bool hasFeet, int age);
	~Aligator();
	int getNumberOfTeeth();
	void setNumberOfTeeth(int numberOfTeeth);
};


#endif /* ALIGATOR_HPP_ */

Aligator.cpp
Code:
#include "Aligator.hpp"

void Aligator::setNumberOfTeeth(int teeth) {
	Aligator::numberOfTeeth = teeth;
}

int Aligator::getNumberOfTeeth() {
	return Aligator::numberOfTeeth;
}

Aligator::Aligator(int teeth, bool hasFeet, int age) {
	Reptile::Reptile(hasFeet, age);              <--FEHLERMELDUNG: error: 'Reptile' has not been declared
	numberOfTeeth = teeth;

	std::cout << "Konstruktor der Klasse Aligator" << std::endl;
}

Aligator::~Aligator() {
	std::cout << "Destruktor der Klasse Aligator" << std::endl;
}

Als Fehlermeldung gibt er mir für die hpp aus:
error: expected class-name before '{' token
und für die cpp:
error: 'Reptile' has not been declared

Woran kann das liegen? Rufe ich den Konstruktor der Geerbten Klasse falsch aus, aber das erklärt nicht die hpp Fehlermeldung...

EDIT: Fehlende Dateien:
Reptile.hpp
Code:
#ifndef REPTILE_HPP_
#define REPTILE_HPP_

class Reptile : public Animal {
	bool hasFeet;
public:
	Reptile(bool hasFeet, int age);
	~Reptile();
	bool getHasFeet();
};


#endif /* REPTILE_HPP_ */

Animal.hpp
Code:
#ifndef ANIMAL_HPP_
#define ANIMAL_HPP_

class Animal {
	int age;
public:
	Animal(int age);
	~Animal();
	int getAge();
	void setAge(int age);
};


#endif /* ANIMAL_HPP_ */
 
Zuletzt bearbeitet:
Ich meinte eigentlich ein #include "Reptile.hpp" in den Alligator-Dateien.
Und in der Reptile.hpp sollte das Selbe mit Animal.hpp drin sein
 
Ok, habe ich gemacht, ändert aber nichts am Error.
Oh du hattest doch recht. Habe jetzt einmal die "Reptile.hpp" in die "Aligator.hpp" eingefügt.
Aber wenn ich immer includes hinzufügen muss, dann wird doch nichts mehr vererbt nurnoch includet... oder?

Jetzt habe ich nurnoch einen Fehler (bis jetzt) bei dem Aufruf des Konstruktors in Aligator.cpp von Reptile.cpp
Code:
Aligator::Aligator() {
Reptile();
}
Muss ich den Konstruktor irgendwie speziell aufrufen? Oder sollte das schon so stimmen?
 
Zuletzt bearbeitet:
include und Vererbung sind komplett unabhängig.
Es geht nur drum, dass der Compiler auch weiß,
was Reptile ist bzw. in welchen Dateien er das finden kann.

Konstruktor: Lass den Aufruf einfach weg.
Da keine Parameter: Automatisch
 

Neue Beiträge

Zurück