Template et Vector - C++ - Programmation
Marsh Posté le 22-11-2005 à 20:28:35
Code :
|
et apparemment, tu n'a pas (ou mal) résolu ton probleme précédent :
template <class T>
T Pixel<T>::getR() const
{ return R; }
pour définir une fonction membre en dehors d'une classe template.
Marsh Posté le 22-11-2005 à 20:36:12
Bien vu ++fab.
Je me permets d'ajouter que vu que T a de fortes chances d'être à jamais un type simple (char, int, etc), les & me paraissent inutiles.
Marsh Posté le 22-11-2005 à 20:45:46
inutile car le gain de performance est infime ou bien pour une autre raison ?
Marsh Posté le 22-11-2005 à 20:47:57
ReplyMarsh Posté le 22-11-2005 à 20:49:04
disons qu'on renvoie (const) & quand on balade des objets pour eviter de les recopier (d'ou le const pour eviter que jean louis les modifient), mais sur des types de bases c'est inutile, taille d'une ref est generalement >= taille du type en question
Marsh Posté le 22-11-2005 à 20:49:47
chrisbk a écrit : t'aura meme une perte de performance, en fait |
là pour le coup j'ai du mal a suivre je perds en performance en passant par référence un type standard plutôt qu'en le passant par copie ?
Marsh Posté le 22-11-2005 à 20:51:46
caddie a écrit : là pour le coup j'ai du mal a suivre je perds en performance en passant par référence un type standard plutôt qu'en le passant par copie ? |
oui
deja, tu n'as aucun gain parce que ton char fait un octet et ta reference, 4. A cet endroit la t'as pas de perte non paske ton cpu 4 octets, il s'en fout. Par contre lorsque tu feras des acces a cette variable, la avec ta réference tu auras une indirection que tu n'aurais pas eu avec une copie
(attention, tout ceci n'est valable que pour les types de bases, pas les struct, class....)
Marsh Posté le 22-11-2005 à 20:52:28
ok merci tu as répondu avant même que je pose la question !
Marsh Posté le 22-11-2005 à 20:53:30
(l'important ici présentemment, c'est l'indirection, pas la taille)
Marsh Posté le 22-11-2005 à 20:54:27
bon apres, question de gout, mais une class pixel jtrouve ca fondamentalement con c'est le genre de truc j'y mettrais une structure et zou
Marsh Posté le 22-11-2005 à 21:00:49
Ouais je suis d'accord, à vrai dire c'est plus un exercice pour me mettre au c++ qu'autre chose. Si je l'avais fait en C j'aurais en effet utilisé une structure.
D'ailleurs je dois bien avouer que je pensais prendre en main rapidement le C++ connaissant pas mal le C et je me casse les dents dessus !
Marsh Posté le 22-11-2005 à 21:01:52
ouais y'a bcp de concept a chopper et d'habitude a perdre, spa simple
Marsh Posté le 22-11-2005 à 21:04:37
chrisbk a écrit : bon apres, question de gout, mais une class pixel jtrouve ca fondamentalement con c'est le genre de truc j'y mettrais une structure et zou |
Yep.
Marsh Posté le 22-11-2005 à 21:30:39
et par ailleurs, je pense que tu te fais chier pour rien avec tes get/set sur un pixel ...
Marsh Posté le 22-11-2005 à 22:55:13
Code :
|
Marsh Posté le 23-11-2005 à 09:43:46
Pourquoi Pixel est-elle template ? Avec la formule de calul de Y, ça me semble un idée assez moyenne.
Marsh Posté le 22-11-2005 à 20:18:37
Bonsoir,
voici un problème que je n'arrive pas à résoudre. Je débute en C++ et avec les STL.
J'ai un problème en ce qui concerne l'ajout d'un objet crée via une template dans un objet Vector:
Voici en gros mon code:
sachant que ma classe pixel est ainsi :
VC++ me retourne ce message d'erreur
error C2664: 'std::vector<class Pixel *,class std::allocator<class Pixel *> >::push_back' : impossible de convertir le paramètre 1 de 'Pixel<T> *' en 'Pixel *const & '
with
[
T=unsigned char
]
sachant que cette erreur me raméne au push_back.
Pourtant je lui passe bien l'adresse de pixel ce qui semble cohérent étant donné ma définition des types d'objet reçu par vpix....
si une âme charitable pouvait m'aider
cordialement,
caddie