C++ template class + zusatz template in einer Methode

lordfritte

Lieutenant
Registriert
Juli 2006
Beiträge
1.005
Hallo ich habe eine Klasse die ich mit einer Template initalisiere: "MyClass<int> meineKlasse;".
Jetzt bekommt natürlich jede meiner Methoden die Template übergeben jetzt wüsste ich gerne ob es es möglich ist einer einzigen Methode eine 2. Zusatztemplate zu geben:
MyClass<int> meineKlasse;
meineKlasse.MeineMethode<float>(...);
 
Code:
template <class T> class MyQueue
{
  private :
    std::vector<T> data;
  public:
    void Add(T const &d);
    void Remove();
    void Print();

    template<class U> void MyFunction( T abc, U def )
    {
      // xyz
    }
};

sowas z.b.?
 
Ja aber von der Klasse trennen lässt sich das irgendwie nicht.
Und die methode sollte auch virtual sein, aber das geht nicht mehr:
error C2898: 'bool MyListUtilities<T>::Find(T,T2)': Vorlagen der Memberfunktion können nicht virtuell sein
 
Vielleicht sowas hier?

Code:
template <class T>
class A
{
public:
  template <class U>
  void f ( T t, U u);
};

template <class T>
template <class U>
void A<T>::f<U>( T t, U u)
{
  // do something
}

Die Definition des Templates muss natürlich immernoch ebenfalls im Header stehen, wenn die Definition dort auch steht.
 
Zuletzt bearbeitet:
Da bekomme ich: error C2768: 'A<T>::f': Unzulässige Verwendung von expliziten Vorlagenargumenten
 
Welchen Compiler in welcher Version benutzt du?

Edit:
Sorry, mein Fehler. So ist's richtig:

Code:
template <class T>
class A
{
public:
  template <class U>
  void f ( T t, U u);
};

template <class T>
template <class U>
void A<T>::f( T t, U u)
{
  // do something
}

Obige Frage würd mich trotzdem interessieren.
 
Zuletzt bearbeitet:
Zurück
Oben