Je crée un modèle de matrice. Il y a des opérateurs, des fonctions et tout fonctionne bien. Sauf quand j'essaie de convertir une matrice de type double en matrice de type int (ou vice versa). = l'opérateur ne peut pas être défini, il n'est donc pas possible de le remplacer par basic_Matrix2D et basic_Matrix2D external par classe. Je sais que je peux écrire dans class = opérateurs pour la conversion mais dans ce cas il y aura deux = opérateur avec les mêmes paramètres. Lors de l'utilisation de double comme paramètre de modèle, la conversion à partir de double sera la même que la conversion à partir du paramètre de modèle. définition de classe est suit, les codes sont accessibles à partir SourceForgeConversion de type de modèle
template <class _T> class basic_Matrix2D {
}
Il y a aussi un autre problème je me suis souvenu sur les modèles, la conversion des œuvres de pointeur de type de modèle lors de la conversion de type de modèle ne fonctionne pas. Cela pourrait être spécifique au compilateur. observer:
operator _T() {
return something;
}
operator _T*() {
return somethingelse;
}
Merci à l'avance,
Cem
Regardez à CRTP http://en.wikipedia.org/wiki/Curiously_recurring_template_pattern - cela peut offrir un moyen d'une solution – slashmais
Thx, cela donne une idée. Je peux dériver des types de matrices de base (double et int) à partir de basic_Matrix2D pour ajouter un opérateur surchargé. J'aurais dû y penser, je suppose que j'ai besoin de plus de caféine –
Notez que les identifiants commençant par un trait de soulignement et continuant avec une lettre majuscule sont réservés pour l'implémentation. Cela signifie que vous n'êtes pas autorisé à utiliser '_T'. (En pratique, cela pourrait signifier que la macro «_T» piétine votre code et provoque des messages d'erreur bizarres.Il en va de même pour tous les identifiants contenant des caractères de soulignement consécutifs et tous les identifiants dans l'espace de noms global commençant par un trait de soulignement. Si c'est trop à retenir, il suffit de suivre le conseil commun pour éviter tous les identifiants commençant par un trait de soulignement ou contenant deux caractères de soulignement consécutifs. – sbi