Bonsoir,
J'ai un problème depuis hier que je n'arrive pas à résoudre, j'ai essayé plusieurs solutions sans succès
Est-il possible d'accéder à un pointeur d'une classe englobante depuis une structure imbriquée ? Voici une partie de mon code pour mieux comprendre :
La classe Mesh :
La fonction Init de la structure MeshEntry où je fais appel au pointeur voulu (m_funcs) :
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 class QOpenGLFunctions; class Mesh { public: Mesh(); ~Mesh(); private: QOpenGLFunctions* m_funcs; struct MeshEntry { MeshEntry(); ~MeshEntry(); void Init(const vector<Vertex>& Vertices, const vector<unsigned int>& Indices); }; };
Le constructeur de la classe Mesh (il n'y a pas de problème à ce niveau là, j'utilise ce bout de code dans d'autres classes)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 void Mesh::MeshEntry::Init(const vector<Vertex>& Vertices, const vector<unsigned int>& Indices) { m_funcs->glGenBuffers(...); // Erreur C2327 / C2065 / C2227 }
Je peux utiliser le pointeur m_funcs dans les méthodes de la classe Mesh mais dès que je l'utilise à l'intérieur d'une fonction de la structure MeshEntry, le compilateur m'envoie 3 erreurs :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Mesh::Mesh() : m_funcs(0) { QOpenGLContext* context = QOpenGLContext::currentContext(); Q_ASSERT(context); m_funcs = context->functions(); m_funcs->initializeOpenGLFunctions(); }
C2327 : "Mesh::m_funcs" n'est pas un nom de type, un membre static, ni un énumérateur
C2065 : "m_funcs" : identificateur non déclaré
C2227 : la partie gauche de "->glGenBuffers" doit pointer vers un type class/struct/union/générique
Existe-t-il une solution pour accéder à ce pointeur depuis cette structure ?
Merci d'avance![]()
Partager