Hallo,
ich habe ein Programm, das nicht kompiliert
31.cpp
person.h
person.cpp
31.cpp: In function 'int main()':
31.cpp:5:36: error 'Geschlecht' has not been declared
Vertausche ich allerdings die include-Befehle in 31.cpp
31.cpp
Kompiliert es. Ich habe mir, wie Technipion gesagt hat, den Präprozessor drüberlaufen lassen und mir die Datei angeschaut. Die Definition des enums ist in der Datei vorhanden. Wieso kompiliert er den Code dann nicht?
ich habe ein Programm, das nicht kompiliert
31.cpp
C++:
#include "person.h"
#include <iostream>
int main() {
Person am {"Annabella Meier", 22, Geschlecht::w};
}
person.h
C++:
#ifndef PERSON_H
#define PERSON_H
#include <string>
enum class Geschlecht { m, w };
class Person {
private:
std::string name;
unsigned int alter;
Geschlecht g;
public:
Person(std::string name, unsigned int alter, Geschlecht g);
std::string getName();
unsigned int getAlter();
void setName(const std::string& neuerName);
void setAlter(unsigned int neuesAlter);
bool istFrau();
bool istMann();
};
#endif
person.cpp
C++:
#include <iostream>
#include "person.h"
Person::Person(std::string name, unsigned int alter, Geschlecht g) {
this->name = name;
this->alter = alter;
this->g = g;
}
std::string Person::getName() {
return this->name;
}
unsigned int Person::getAlter() {
return this->alter;
}
void Person::setName(const std::string& neuerName) {
this->name = neuerName;
}
void Person::setAlter(unsigned int neuesAlter) {
this->alter = neuesAlter;
}
bool Person::istFrau() {
return this->g == Geschlecht::w;
}
bool Person::istMann() {
return this->g == Geschlecht::m;
}
31.cpp: In function 'int main()':
31.cpp:5:36: error 'Geschlecht' has not been declared
Vertausche ich allerdings die include-Befehle in 31.cpp
31.cpp
C++:
#include <iostream>
#include "person.h"
...
Kompiliert es. Ich habe mir, wie Technipion gesagt hat, den Präprozessor drüberlaufen lassen und mir die Datei angeschaut. Die Definition des enums ist in der Datei vorhanden. Wieso kompiliert er den Code dann nicht?