C++, Class 重定义
C++, Class redefinition
Error 3 error C2011 : 'Queue' : 'class' type redefinition.
Error 2 error C2011 : 'Edge' : 'class' type redefinition.
为什么会出现这个错误?
我编译了程序,它崩溃了...
#include "Edge.h"
class Queue
{
private:
Edge * Heap;
int hpos;
public:
Queue(int n);
~Queue();
Edge front();
void push(Edge e);
void pop();
};
class Edge
{
int v1, v2, weight; // Wierzchołki krawędzi, waga krawędzi
};
#include "Queue.h"
struct TNode
{
TNode * next;
int v, weight;
};
class MSTree
{
private:
TNode ** A; // Tablica list sąsiedztwa
int Alen; // Liczba komórek w tablicy
int weight; // Waga całego drzewa
public:
MSTree(int n);
~MSTree();
void addEdge(Edge e);
void print();
};
#include "Queue.h"
struct DSNode
{
int up, rank;
};
class DSStruct
{
private:
DSNode * Z;
public:
DSStruct(int n);
~DSStruct();
void MakeSet(int v);
int FindSet(int v);
void UnionSets(Edge e);
};
您收到此错误的原因很可能是您的 header 文件多次包含在同一编译单元中。您应该按照此处 http://en.wikipedia.org/wiki/Include_guard
的说明在 header 中使用 include guards
Error 3 error C2011 : 'Queue' : 'class' type redefinition.
Error 2 error C2011 : 'Edge' : 'class' type redefinition.
为什么会出现这个错误? 我编译了程序,它崩溃了...
#include "Edge.h"
class Queue
{
private:
Edge * Heap;
int hpos;
public:
Queue(int n);
~Queue();
Edge front();
void push(Edge e);
void pop();
};
class Edge
{
int v1, v2, weight; // Wierzchołki krawędzi, waga krawędzi
};
#include "Queue.h"
struct TNode
{
TNode * next;
int v, weight;
};
class MSTree
{
private:
TNode ** A; // Tablica list sąsiedztwa
int Alen; // Liczba komórek w tablicy
int weight; // Waga całego drzewa
public:
MSTree(int n);
~MSTree();
void addEdge(Edge e);
void print();
};
#include "Queue.h"
struct DSNode
{
int up, rank;
};
class DSStruct
{
private:
DSNode * Z;
public:
DSStruct(int n);
~DSStruct();
void MakeSet(int v);
int FindSet(int v);
void UnionSets(Edge e);
};
您收到此错误的原因很可能是您的 header 文件多次包含在同一编译单元中。您应该按照此处 http://en.wikipedia.org/wiki/Include_guard
的说明在 header 中使用 include guards