template fun



  • hey,
    ich habe eine template basisklasse und moechte in der abgeleiteten klass auf eine membervariable der basisklasse zugreifen...wie macht man das?

    #include <iostream>
    using namespace std;
    
    template <class T>
    class foo {
    public:
    	T a;
    };
    
    template <class T>
    class bar : public foo<T> {
    public:
    	T get_a() const {
    		return a;
    	}
    };
    
    int main() {
    	// your code goes here
    
    	bar<int> b;
    	cout << b.get_a() << endl;
    
    	return 0;
    }
    

  • Mod

    Indem man a (type-)dependent macht.

    T get_a() const {
            return this->a;
        }
    


  • ok google meinte

    this->a
    

    soll man nehmen... warum?


  • Mod

    Der Scope von Basisklassen die von einem Template-Parameter abhängen wird nicht zur Definitionszeit angeschaut, sondern lediglich zur Instantiierungszeit, i.e. wenn die Template Argumente bekannt sind. a ist aber nicht dependent (abhängig von einem Template-Parameter), und deswegen muss schon zur Definitionszeit eine Deklaration von a vorliegen. Leider ist die einzige Deklaration von a in eben jener abhängigen Basisklasse foo<T> - und deswegen gibt's 'n Problem!

    Die Lösung besteht darin den Namen, der a bezeichnet, dependent zu machen, sodass der Name erst gesucht wird sobald die Template-Argumente bekannt sind - und damit nachdem die Basisklasse durchleuchtet wurde.

    ok google meinte

    Zuerst fragen und dann googlen?



  • Links und Rechts auf der Tastatur findest Du Tasten, die man shift-Tasten nennt. Wenn Du die gleichzeitig mit einer Buchstabentaste drückst, dann bekommst Du Großbuchstaben. Details, wann man diese verwendet findest Du im Duden.



  • besserwisser schrieb:

    Links und Rechts auf der Tastatur findest Du Tasten, die man shift-Tasten nennt. Wenn Du die gleichzeitig mit einer Buchstabentaste drückst, dann bekommst Du Großbuchstaben. Details, wann man diese verwendet findest Du im Duden.

    diese zurechtweisung ist unnötig. auch in kleinschrift war die frage klar verständlich.
    andnrs verhält es sich, wnee man tola besoffne tiip oder und weder logik noch satzzeichen und damit meine ich vorallem kommas nicht zu viele davon aber genug kennt oder anbringt und zuguterletzt sind die Großschreiber zu nennen, die ihre Sätze oft ganz ohne Verb. Du mich?

    bei mir macht es auch keinen unterschied: sprachlich komme ich anscheinend sonnenklar rüber; allerdings werde ich so oft programmiertechnisch missverstanden, daß ich jede woche einen troll genannt werde.



  • besserwisser schrieb:

    Links und Rechtsrechts auf der Tastatur findest Du Tasten, die man **(S?)**shift-Tasten nennt. Details, wann man diese verwendet - KOMMA - findest Du im Duden.

    FTFY.


  • Mod

    Details, wann man diese verwendet findest Du im Duden.

    Ist das überhaupt ein grammatikalisch korrekter Satz?



  • Arcoth schrieb:

    Details, wann man diese verwendet findest Du im Duden.

    Ist das überhaupt ein grammatikalisch korrekter Satz?

    Bis auf das fehlende Komma ist alles okay.


  • Mod

    Danke. Es klang irgendwie falsch, also falscher als "Details zur korrekten Verwendung von X".


Log in to reply