2012-11-11 2 views
0

J'ai une méthode de modèle et je voudrais que la méthode de modèle utilise une méthode spécifique d'une classe pour faire l'opération. C'est possible ?Modèles utilisant des méthodes de classe

template<typename T> 
int minus(T t1,T t2){ 
return t1-t2; 
} 

Et dans ma classe d'objets de pomme i ont une méthode appelée getPrice() Comment puis-je combiner les deux.

Est-ce correct?

template<typename T> 
int minus(T t1,T t2){ 
return t1.getPrice()-t2.getPrice(); 
} 
+0

Oui, cela fonctionne, mais il perd la généralité de la première version du modèle. C'est-à-dire, cela ne fonctionne que pour les types qui ont une fonction membre appelée 'getPrice'. –

Répondre

5

Pour cela, vous voudrez probablement une fonction ordinaire pour votre type:

template <class T> 
int minus(T t1, T t2) { 
    return t1 - t2; 
} 

int minus(const apple& t1, const apple& t2) { 
    return t1.getPrice() - t2.getPrice(); 
} 
+0

Merci Pete, je voudrais savoir comment puis-je combiner avec la surcharge de l'opérateur par exemple opérateur –

+0

Cela dépend de ce que le type est censé faire. Je ne m'attendrais pas à ce qu'un type nommé "apple" fournisse un "operator-"; soustraire deux pommes n'a pas beaucoup de sens. Mais pour certains algorithmes, il est judicieux de pouvoir soustraire leurs prix, et pour ces algorithmes, le «minus» que vous explorez est une bonne approche. –

Questions connexes