Ausgangssituation:
Wenn ich jetzt alles richtig verstanden habe, sollte es kein Problem sein, in SetEingangSchieneVerbunden die protected-Funktion der Basisklasse aufzurufen:
Ich bekomme aber vom Compiler (Borland C++ Builder 6) folgende Fehler ins Gesicht geworfen:
Mein momentaner Workaround sieht so aus:
Gefällt mir aber ganz ehrlich gesagt nicht wirklich.
Im Anhang ist das Projekt, falls sich jemand damit etwas spielen möchte (Netzberechnung.bpr ist die betroffene Baustelle)
Ich hoffe, dass mir jemand aus der Misere heraus helfen kann.
mfg benediktibk
Code:
class TNetzKomponenteElektrisch
{
protected:
bool AnschliessenEin(TNetzKomponenteElektrisch *NetzKomponente, unsigned int Anschluss);
bool AnschliessenAus(TNetzKomponenteElektrisch *NetzKomponente, unsigned int Anschluss);
virtual bool AbschliessenEin(unsigned int Anschluss);
virtual bool AbschliessenAus(unsigned int Anschluss);
};
Code:
class TSchaltAnlageElektrisch : public virtual TNetzKomponenteElektrisch
{
protected:
bool SetEingangSchieneVerbunden(unsigned int Schiene, unsigned int Eingang, bool Wert);
};
Code:
bool TSchaltAnlageElektrisch::SetEingangSchieneVerbunden(unsigned int Schiene, unsigned int Eingang, bool Wert)
{
[B]TNetzKomponenteElektrisch* TempKomponente;[/B]
if (Schiene < AnzahlSammelSchienen && Eingang < AnschluesseEinAnzahl)
{
mEingangVerbunden[Schiene][Eingang] = Wert;
TempKomponente = mSammelSchienen.at(Schiene);
if (Wert)
[B]TempKomponente->AnschliessenEin(GetAngeschlossenEin(Eingang),Eingang);[/B]
else
[B]TempKomponente->AbschliessenEin(Eingang);[/B]
return true;
}
return false;
}
Und damit habe ich gewissermaßen ein Problem, weil diese Meldungen bedeuten, dass ich die Zugriffsbeschränkungen von protected nicht wirklich begriffen habe. Ist das so?[C++ Error] TSchaltAnlageElektrisch.cpp(246): E2247 'TNetzKomponenteElektrisch::AnschliessenEin(TNetzKomponenteElektrisch *,unsigned int)' is not accessible
[C++ Error] TSchaltAnlageElektrisch.cpp(248): E2247 'TNetzKomponenteElektrisch::AbschliessenEin(unsigned int)' is not accessible
[C++ Error] TSchaltAnlageElektrisch.cpp(273): E2247 'TNetzKomponenteElektrisch::AnschliessenAus(TNetzKomponenteElektrisch *,unsigned int)' is not accessible
[C++ Error] TSchaltAnlageElektrisch.cpp(275): E2247 'TNetzKomponenteElektrisch::AbschliessenAus(unsigned int)' is not accessible
Mein momentaner Workaround sieht so aus:
Code:
class TSchaltAnlageElektrisch;
class TNetzKomponenteElektrisch
{
friend class TSchaltAnlageElektrisch;
};
Im Anhang ist das Projekt, falls sich jemand damit etwas spielen möchte (Netzberechnung.bpr ist die betroffene Baustelle)
Ich hoffe, dass mir jemand aus der Misere heraus helfen kann.
mfg benediktibk
Zuletzt bearbeitet: