typename und ctor?



  • Hallo Leute!

    template<class T>
    class foo
    {
    public:
      class foo2
      {
      public:
        foo(int) {}
      };
    };
    
    template<class T>
    class Test
    {
    public:
      Test()
      {
        typename foo<T>::foo2(7);
      }
    };
    

    ist dieser typename noetig?
    ich tippe zwar auf JA, aber Borland Compiler empfinden das als Fehler und den anderen compilern ist es egal. Nur Codewarrior will hier n typename.

    was ist richtig?

    PS: desto laenger ich darueber nachdenke, desto mehr glaube ich, das typename ist unnoetig. aber ich werd mir da immer unsicherer 😞



  • Hallo,
    mal abgesehen davon, dass der Ctor foo2 heißen muss:
    das typename ist unnötig, da du nicht einen Typen deklarierst sondern eindeutig ein Objekt erzeugst.
    Du bräuchtest das typename, wenn du eine benannte Variable deklarieren würdest:

    typename foo<T>::foo2 f(2);
    


  • HumeSikkins schrieb:

    Hallo,
    mal abgesehen davon, dass der Ctor foo2 heißen muss:

    ah, sorry. hab den code nur vereinfacht und dabei nicht genau genug geschaut.

    das typename ist unnötig, da du nicht einen Typen deklarierst sondern eindeutig ein Objekt erzeugst.

    danke! 👍


Anmelden zum Antworten