Ho due classi, Mesh e MeshList. Voglio MeshList per avere una funzione che può cambiare i membri privati di Mesh. Ma non verrà compilato e non so perché. Ecco il mio codice.C++ non mi permette di fare amicizia
Mesh.h
#ifndef _MESH_H
#define _MESH_H
#include "MeshList.h"
#include <iostream>
class Mesh
{
private:
unsigned int vboHandle_;
friend void MeshList::UpdateVBOHandle();
public:
inline void Out() {std::cout << vboHandle_;}
};
#endif
Mesh.cpp
#include "Mesh.h"
MeshList.h
#ifndef _MESH_LIST_H
#define _MESH_LIST_H
#include "Mesh.h"
class MeshList
{
public:
Mesh *mesh; //Line 11 Error
void UpdateVBOHandle();
};
#endif
MeshList.cpp
#include "MeshList.h"
void MeshList::UpdateVBOHandle()
{
*mesh->vboHandle_ = 4;
}
ottengo questi errori:
MeshList.h (Linea 11)
- errore C2143: errore di sintassi: manca ';' prima di '*'
- errore C4430: identificatore di tipo mancante - int assunto. Nota: C++ no supporto predefinito-int
errore C4430: identificatore di tipo mancante - int assunto. Nota: C++ non supporto
mesh.h default-int (11): l'errore C2653: 'MeshList': non è una classe o spazio dei nomi nome
- meshlist.cpp (5): l'errore C2248 : 'Mesh :: vboHandle_': non può accedere membro privato dichiarato nella classe 'mesh'
- mesh.h (10): vedi dichiarazione di 'Mesh :: vboHandle_'
- mesh.h (8): vedi dichiarazione di 'Mesh'
- meshlist.cpp (5): errore C2100: indiretto illegale
Hai bisogno di uscire di più. –
+1 per il solo titolo. –
Prova 'class Meshlist;' invece di '#include" MeshList.h "' – chris