У меня есть два класса: Mesh и MeshList. Я хочу, чтобы у MeshList была функция, которая может изменять частные члены Mesh. Но он не будет компилироваться, и я не знаю, почему. Вот мой код.
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;
}
Я получаю следующие ошибки:
MeshList.h(строка 11)
- ошибка C2143: синтаксическая ошибка: отсутствует ';' до '*'
- ошибка C4430: отсутствует спецификатор типа - int. Примечание: С++ не поддержка default-int
-
ошибка C4430: отсутствует спецификатор типа - int. Примечание: С++ не поддержка default-int
-
mesh.h(11): ошибка C2653: "MeshList": не является классом или пространством имен имя
- meshlist.cpp(5): ошибка C2248: "Mesh:: vboHandle_": невозможно получить доступ закрытый член объявлен в классе "Mesh"
- mesh.h(10): см. объявление "Mesh:: vboHandle _"
- mesh.h(8): см. объявление "Mesh"
- meshlist.cpp(5): ошибка C2100: незаконное косвенное обозначение