B
B_C
Sers!
Es geht um folgende Fehlermeldung:
15 H:\Cpp\Projekte\Hello World\Trafficlight_3.cpp
no `void Trafficlight_3::Status()' member function declared in class `Trafficlight_3'
Nun gut, insoweit hat der compiler sogar recht. In Trafficlight_3 hab ich diese Funktion nicht deklariert, wohl aber in der Basisklasse Trafficlight. Dort steht sie als "protected", also sollte Trafficlight_3 die Funktion doch kennen, oder
Hier mal der Code:
"Trafficlight.h"
"Trafficlight.cpp"
"Trafficlight_3.h"
"Trafficlight_3.cpp"
Es gibt noch nen Trafficlight_2 (mit 2 statt 3 Lichtern) wo der Fehler auch auftritt. Aber dürfte wohl eh bei beiden die selbe Ursache haben.
Wie kann es jetzt sein, dass Trafficlight_3 "void Status()" nicht kennt? Was mich daran am meisten irritiert: Status() ist das einzige worüber er meckert. Die ganzen Membervariablen sind für ihn kein Problem.
Freu mich schon auf Antworten...
Björn
Es geht um folgende Fehlermeldung:
15 H:\Cpp\Projekte\Hello World\Trafficlight_3.cpp
no `void Trafficlight_3::Status()' member function declared in class `Trafficlight_3'
Nun gut, insoweit hat der compiler sogar recht. In Trafficlight_3 hab ich diese Funktion nicht deklariert, wohl aber in der Basisklasse Trafficlight. Dort steht sie als "protected", also sollte Trafficlight_3 die Funktion doch kennen, oder
Hier mal der Code:
"Trafficlight.h"
Code:
#ifndef TRAFFICLIGHT
#define TRAFFICLIGHT
#include <string>
using namespace std;
class Trafficlight
{
public:
Trafficlight(int);
protected:
int Lightcount;
int i_ID;
string s_ID;
string ID_Output;
bool Red,Green;
void Status(void);
};
#endif
"Trafficlight.cpp"
Code:
#include <sstream>
#include "Trafficlight.h"
using namespace std;
Trafficlight::Trafficlight(int ID)
{
Red=true;
Green=false;
stringstream sstr;
i_ID=ID;
sstr<<i_ID;
sstr>>s_ID;
ID_Output="TL "+s_ID+": ";
}
"Trafficlight_3.h"
Code:
#include <string>
#include "Trafficlight.h"
using namespace std;
class Trafficlight_3 : public Trafficlight
{
public:
Trafficlight_3(int);
void SetLights(bool,bool,bool);
private:
bool Yellow;
};
"Trafficlight_3.cpp"
Code:
#include <iostream>
#include "Trafficlight_3.h"
using namespace std;
Trafficlight_3::Trafficlight_3(int ID) : Trafficlight(ID)
{
Yellow=false;
Lightcount=3;
Status();
}
void Trafficlight_3::Status(void)
{
cout<<ID_Output<<"Red = "<<Red<<", Yellow = "<<Yellow<<", Green = "<<Green<<"\n";
}
void Trafficlight_3::SetLights(bool RED,bool YELLOW,bool GREEN)
{
Red=RED;
Yellow=YELLOW;
Green=GREEN;
Status();
}
Es gibt noch nen Trafficlight_2 (mit 2 statt 3 Lichtern) wo der Fehler auch auftritt. Aber dürfte wohl eh bei beiden die selbe Ursache haben.
Wie kann es jetzt sein, dass Trafficlight_3 "void Status()" nicht kennt? Was mich daran am meisten irritiert: Status() ist das einzige worüber er meckert. Die ganzen Membervariablen sind für ihn kein Problem.
Freu mich schon auf Antworten...
Björn