2016-06-11 8 views
-1

Hier ist meine Frage nach Template-KlasseTemplate-Klasse mit Betreiber Überlastung

aclass<int> A{1,2}; 
aclass<float> B{3.0,4.0}; 
aclass<int> C; 

int main() 
{ 
    C=A+B; //How to overload this operator in a simple way? 
    B=A; //And also this? 
    return 0; 
} 

Wie kann ich überladen Operator Template-Klasse mit verschiedenen Arten zu behandeln? (Sorry für mein schlechtes Englisch)

Antwort

0

Sie können Mitglied Funktionsschablonen in Ihrer Klassenvorlage haben:

template <typename T> 
struct aclass 
{ 
    aclass(aclass const &) = default; 
    aclass & operator=(const aclass &) = default; 

    template <typename U> 
    aclass(aclass<U> const & rhs) : a_(rhs.a_), b_(rhs.b_) {} 

    template <typename U> 
    aclass & operator=(aclass<U> const & rhs) 
    { 
     a_ = rhs.a_; 
     b_ = rhs.b_; 
     return *this; 
    } 

    T a_, b_; 
}; 
+0

Wie kann ich Operator machen = als Freund-Funktion? – charliepu123

+0

@ charliepu123: Sie können alle Vorlage Instanzen einen Freund machen: 'Vorlage Friend Struct Aclass;' –