difficultés sur un singleton: variable membre indéfinie
Bonjour,
je crois que c'est un cas d'école mais je n'arrive pas à résoudre.
Fraichement converti aux classes,
j'ai créée avec succés des classes et des singletons, ça a été laborieux mais ça fonctionne (merci à ceux qui m'ont guider)
Je veux créer un singleton supplémentaire aujourd'hui, mais ça ne fonctionne plus, pourtant basé sur mes succés précédent et, je croyais, une bonne compréhension des notions private/public et static
Voyez-vous où se situe la ou les erreurs?
mask.h:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| #ifndef MASK_H
#define MASK_H
#include <opencv2/opencv.hpp>
class mask {
static int aaaaa;
static cv::Mat imgMask[10]; //tableau de 10 cv::Mat (images)
static bool matMask[640][480]; //matrice de masquage
private: // constructeur et destructeur en private car singleton (une seule instanciation de la classe)
mask(){};
~mask(){};
public:
static mask *getInstance(); //demande d'instanciation
static void kill (); //destruction de l'instanciation
static int get_aaaa(void);
static void acqImageMask (cv::VideoCapture& flux);
private:
static mask *singleton; //
};
#endif |
mask.cpp:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| #include "mask.h"
/*****************************/
/* instanciation du singleton */
/********************************/
mask *mask::getInstance(){
if (NULL==singleton){
singleton = new mask; //check si déjà instancié
aaaaa++;
}
return singleton;
}
/*******************/
/* kill le singhleton */
/*********************/
void mask::kill(){
if (NULL!=singleton){
delete singleton;
singleton = NULL;
aaaaa--;
}
}
/*********************************/
/* retourne le nombre do'bjets instanciés */
/********************/
int mask::get_aaaa(void){return aaaaa;}
/**********************************/
/* appelle la capture d'une image non conservée (vidage buffer) */
/*********************************/
void mask::acqImageMask(cv::VideoCapture& flux){
if (flux.read(imgMask[0])){
std::cout << "succés "<<std::endl;
}
else{
}
} |
compil:
Code:
/............../mask.cpp|11|référence indéfinie vers « mask::singleton »|
idem pour aaaaa
Merci bien