У меня есть два класса, Mesh и MeshList. Я хочу, чтобы у MeshList была функция, которая может изменять частные члены Mesh. Но он не будет компилироваться, и я не знаю, почему. Вот мой код.C++ не позволит мне подружиться
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. Примечание: C++ не support default-int
ошибка C4430: спецификатор отсутствующего типа - предполагается int. Примечание: C++ не поддержка по умолчанию-ИНТ
mesh.h (11): ошибка C2653: 'MeshList': это не класс или пространство имен имя
- meshlist.cpp (5): ошибка C2248 : 'Mesh :: vboHandle_': не может получить доступ к закрытый член объявлен в классе 'Mesh'
- mesh.h (10): см декларирование 'Mesh :: vboHandle_'
- mesh.h (8): см декларацию of 'Mesh'
- meshlist.cpp (5): ошибка C2100: незаконное направление
Вам нужно больше выйти. –
+1 для названия в одиночку. –
Попробуйте 'class Meshlist;' вместо '#include 'MeshList.h" ' – chris