Memberzugriff bei C++ Template Vererbung

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Memberzugriff bei C++ Template Vererbung

    Ich habe mich gerade recht lange mit einem ganz simplen Stueck Code herumgeschlagen, das in gcc Versionen neuer als 3.4 nicht funktioniert (Fehler: error: 'ref' was not declared in this scope):

    Quellcode

    1. template<typename T>
    2. class test_parent{
    3. protected:
    4. int ref;
    5. T dummy;
    6. };
    7. template<typename T>
    8. class test_child : public test_parent<T> {
    9. public:
    10. void dummy(){
    11. ref = 1; // << Diese Zeile wird vom Fehler markiert
    12. }
    13. };
    14. int main()
    15. {
    16. test_child<int> t;
    17. return 0;
    18. }
    Alles anzeigen


    Von der STL Library konnte ich die folgende Loesung abschauen:

    Quellcode

    1. template<typename T>
    2. class test_child : public test_parent<T> {
    3. public:
    4. using test_parent<T>::ref; // << diese Zeile ist noetig um auf ref zuzugreifen
    5. void dummy(){
    6. ref = 1;
    7. }
    8. };


    Kann mir jemand erklaeren, warum der Standard das Vererben von protected/public Membervariablen nicht standardmaessig zulaesst?
    Noch mehr wuerde ich mich jedoch freuen, wenn mir jemand die Syntax nennen kann um alle Membervariablen mit einem using-Befehl einzublenden.
    Falls ich mit dieser Frage im falschen Forum gelandet bin, wuerde ich mich ueber Tipps fuer weitere Foren freuen.