J'essaie de comprendre le constructeur utilisé dans une classe implémentée dans une bibliothèque que j'utilise. Les éléments clés de la classe SequenceAnalyzer ressemblent:Construction d'une classe via des références à des objets
class SequenceAnalyzer {
protected:
std::vector<cv::Mat> images_;
public:
SequenceAnalyzer(std::vector<cv::Mat> *images = NULL)
{
if (images != NULL)
images_ = (*images);
}
};
Lors de la construction d'une instance de cette classe dans mon principal, je passe une référence à un vecteur:
std::vector<cv::Mat> myImages;
SequenceAnalyzer se(&myImages);
maintenant passer dans mes images par référence passé leur emplacement en mémoire à la classe. Mais ma compréhension de l'opérateur (* images) signifie que leur adresse a été déréférencée et que l'opérateur = copie alors le contenu.
Y at-il un avantage à faire passer myImages dans la classe de cette manière? Pourquoi les pointeurs sont-ils utilisés en premier lieu si cela ne se termine pas en copie de sauvegarde sauvegardée?
Je ne vois aucune référence ici . –
Si vous voulez dire la différence entre les références et les pointeurs, je crains que ce soit un sujet flou pour moi. Si vous voulez dire de quelle bibliothèque je parle, c'est le [projet de bibliothèque OpenCV Structure from Motion] (http://code.google.com/p/gsoc2011sfm/). – Chris
Vous le passez comme pointeur sur l'objet 'vector' myImages. –
Praveen