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 :
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);
    };
 
};
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
void Mesh::MeshEntry::Init(const vector<Vertex>& Vertices, const vector<unsigned int>& Indices)
{
    m_funcs->glGenBuffers(...); // Erreur C2327 / C2065 / C2227
}
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
5
6
7
8
9
Mesh::Mesh() : m_funcs(0)
{
    QOpenGLContext* context = QOpenGLContext::currentContext();
 
    Q_ASSERT(context);
 
    m_funcs = context->functions();
    m_funcs->initializeOpenGLFunctions();
}
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 :

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