Ошибка: "ClassName" не называет тип
Я знаю, что ошибка довольно очевидна, но я не могу найти внутреннюю проблему в моем коде. Все мне кажется нормальным. В любом случае, есть мои заголовочные файлы:
GList.h:
#ifndef LIST_H_
#define LIST_H_
#include "GNode.h"
class GList {
GNode *head,*last;
int size;
public:
GList();
~GList();
Functions();
};
#endif
GNode.h:
#pragma once
#include "VList.h"
#include "Key.h"
class GNode
{
Key value;
VList *Vec_in; // Vertex List
VList *Vec_out;
GNode *next, *prev;
public:
GNode();
GNode(Key );
~GNode();
Functions();
};
VList.h:
#ifndef LIST_H_
#define LIST_H_
#include "VNode.h"
class VList {
VNode *head,*last;
int size;
public:
VList();
~VList();
Functions();
};
#endif
VNode.h:
#pragma once
class Vertex;
class VNode
{
Vertex *value;
VNode *next, *prev;
public:
VNode();
VNode(Vertex *);
~VNode();
Functions();
};
class Vertex {
int trans_amount;
VNode *Start; // The VNode that the vertex beggins from
VNode *Dest; // the destination node that vertex ends up
public:
Vertex();
Vertex(int);
~Vertex();
Functions();
};
main.cpp (я не знаю, нужно ли это. Это просто простой main для проверки кода):
#include <iostream>
#include "GList.h"
using namespace std;
int main(int argc, char **argv) {
GList *list = new GList;
for (int i = 0; i < 20; i++) {
Key x(i);
list->Push(x);
}
list->PrintList();
delete list;
return 0;
}
Когда я пытаюсь скомпилировать, я получаю следующие ошибки:
In file included from GList.h:4:0,
from GList.cpp:1:
GNode.h:11:2: error: ‘VList’ does not name a type
VList *Vec_in; // Vertex List
^
GNode.h:12:2: error: ‘VList’ does not name a type
VList *Vec_out;
^
In file included from GList.h:4:0,
from main.cpp:3:
GNode.h:11:2: error: ‘VList’ does not name a type
VList *Vec_in; // Vertex List
^
GNode.h:12:2: error: ‘VList’ does not name a type
VList *Vec_out;
Исходные файлы VList & VNode работают, так как в другом месте я получил ожидаемые результаты, так что я предполагаю, что мне не хватает знаний о предварительном объявлении или что-то действительно фундаментальное.
PS: я не нашел веских причин для публикации файлов.cpp, так как это ошибка включения.
1 ответ
Решение
Кажется, есть проблема с копированием / вставкой? В GList.h
там должен быть
#ifndef GLIST_H_
#define GLIST_H_
...
#endif
И в VList.h
#ifndef VLIST_H_
#define VLIST_H_
...
#endif