template



  • ach menno, der Punkt ist folgender: Dein zweiter Code, der schon mal anstandslos kompilierte, hat auch nur einen Template Parameter im op=, es ist zwar ein anderer als T, aber es ist nur einer. Es ist kein Problem dem Template einen anderen zu geben, solange es nicht mehr sind, als das Template aufnehmen kann.

    Du hingegen willst laut op= eine Klasse AutoPointer<T,X> haben, die gibt's aber nicht. Es gibt nur einen AutoPointer<T>. Wohin sollen zwei Parameter gepackt werden, wenn nur einer angegeben ist?

    MfG

    GPC



  • template< class T >
    struct Foo
    {
      template< class X >
      X bar();
    };
    
    template< class T >
     template< class X >
      X Foo< T >::bar()
      { 
         return X();
      }
    

  • Mod

    wie dr. prof gezeigt hat. du hast hier ein template innerhalb eines templates.
    der zwang, stets alle parameter wiederholen zu müssen, führt leicht zu einer menge deklarativen 'lärms', wenn auf 1 zeile richtigen code 10 zeilen deklaration kommen. hier sollte man die definition der member direkt in der klassendefinition in betracht ziehen. im übrigen will noch darauf hinweise, dass - abgesehen von den syntaktischen problemen, die bis jetzt diskutiert wurden - diese smartpointer klasse (ebenso wie die vorlage) mehrere fehler enthält.


Anmelden zum Antworten