Problème d'accès à un pointeur
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:
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:
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:
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 :)