Vererbung
-
Warum probierst du das nicht einfach aus?!
btw:
Die fehlen die Typen bei den Funktionen und implementierungen sowieso. Das heisst, dass der Code so oder so nicht kompiliert (und auch nicht linken würde, wenn die Typen da wären).
Dazu kommt noch, dass esint mainheisst und nichtvoid main!Bei deiner Anschlussfrage komme ich nicht draus. Du hast da keine virtuellen Funktionen. Und klar wenn du sie benutzen willst musst du sie implementieren.
Zeig doch besser lauffähigen Code. Dann hast du nämlich die Antwort bereits..

//EDIT
Natürlich sind alle 3 Aufrufe nicht erlaubt, da sie in der abgeleiteten Klasse nach ausse alle privat sind. (Aber das hätte dir auch ein Compiler sagen können..)
-
@ vererber
ich mein normalerweise deklariert man eine Funktion in der Klasse und
definiert sie außerhalbz.b.
x::funktion (){ hier folgt die Definition }
-
aha drakon.
Es gehn tatsächlich alle aufrufe nicht.
Leider hab ich bis heute nicht verstanden was protected Vererbung
von private Vererbung unterscheiden soll
-
virtual void function() = 0;Das hier ist doch nur eine Deklaration , schließlich fehlen die {} klammern

-
sorry nochmal
natürlich hätte es oben so heissen solln
objekt.funktion1(); objekt.funktion2(); objekt.funktion3();
-
blurry254 schrieb:
Leider hab ich bis heute nicht verstanden was protected Vererbung
von private Vererbung unterscheiden soll
Ganz einfach. Wenn du privat erbst, dann kann, wenn du erneut eine Klasse ableitest (also dann die dritte) auf keine public und privat Funktionen zugreifen. Bei protected schon. (Nach aussen ist aber, wie du siehst privat)
-
Es ist doch egal ob ich protected oder private vererbe,
in beiden Fällen hat eine Instanz keinerlei Zugriff mehr
-
class y:protected x{}; class z:public y{};die Klasse z kann jetzt nicht mehr auf Klasse x Elemente zugreifen ???
-
Keiner mehr da ?
-
Du hast 3 Möglichkeiten.
1. Du fragst hier jedes Detail nach und bekommst irgendwann keine Antwort mehr oder
2. Du liest es in einem Buch oder Online nach oder
3. Du probierst es einfach mal ausIch persönlich mag Variante 1 nicht. 2 und 3 sind aber schon sehr gut und können wahrscheinlich die meisten Fragen beantworten.
-
class x{ public: void funktion1(){}; protected:void funktion2(){}; private: void funktion3(){}; }; class y:protected x{ public: void foo(){ funktion2(); } }; class z:public y{ public: void foo(){funktion2();} };Es kommt kein Fehler , sry ich verstehs einfach nicht
-
ahhhhhhhh
bei protected geht es ja , aber nicht bei private
Klar dass kein Fehler kam .