Ошибка: "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
Другие вопросы по тегам