Bonsoir à tous.
J'ai l'erreur de compilation suivante : error C2248: 'CObject::CObject' : cannot access private member declared in class 'CObject' lorsque je tente d'utiliser un tableau
d'objet défini avec typedef. Je m'explique, j'ai une classe Calibre toute simple qui implémente un constructeur de recopie et un constructeur d'affectation.
Ensuite dans une autre classe j'aimerai qu'une fonction me retourne une liste de calibre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 class AFX_EXT_CLASS Calibre { public: Calibre(); Calibre(const Calibre& calibre); Calibre& operator = (const Calibre& calibre); virtual ~Calibre(); CString GetCode() const { return m_strCode; } CString GetLibellé() const { return m_strLibellé; } void SetCode (const CString& code) { m_strCode = code; } void SetLibellé (const CString& libellé) { m_strLibellé = libellé; } private: CString m_strCode; CString m_strLibellé; }; typedef CArray<Calibre, Calibre&> ListCalibres; // La déclaration ne pose pas de problème
Je ne vois pas mon erreur, la variable m_listCalibres définie sans typedef se rempli bien alors qu'avec une définition "globale" du type typedef cela ne fonctionne pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 class AFX_EXT_CLASS CalibreManager { public: CalibreManager(FbConnexion *pDatabase = NULL); ~CalibreManager(); void Select(); ListCalibres Select2(); private: FbConnexion *m_pDatabase; CArray<Calibre, Calibre&> m_listCalibres; }; // Dans mon fichier cpp // Select() => rempli une liste de calibre définie comme variable membre de ma classe CalibreManager void CalibreManager::Select() { Calibre calibre; // Je récupère mes données dans une base de données Firebird // et je rempli une liste définie comme variable membre de ma classe m_listCalibres.Add(calibre); // Ok, rempli bien ma liste } ListCalibres CalibreManager::Select2() { ListCalibres lstCalibres; // Erreur de compilation C2248 ? return lstCalibres; }
De plus l'erreur mentionne la classe CObject que je n'utilise pas.
Avez vous une idée ?
Partager