gpt4 book ai didi

class - '[Class name]' 不命名 C++ 中的类型

转载 作者:行者123 更新时间:2023-12-01 11:43:29 25 4
gpt4 key购买 nike

我正在使用列表的列表对图形进行编程。为此,我有两个类,每个类都有一个指向同一类的另一个对象的指针和一个指向第二个类的对象的指针。这是代码:

文件 V.h:

#ifndef VERTICEPUNT_H
#define VERTICEPUNT_H

#include "A.cpp"

typedef char E;

class V
{
public:
E etiqueta;
V* siguiente;
A* primera; //<- Error: 'A' does not name a type

V();
~V();
};

#endif // VERTICEPUNT_H

文件 V.cpp:

#include "V.h"

V::V()
{
etiqueta = ' ';
siguiente = 0;
primera = 0; //<- Error: 'primera' was not declared in this scope
}

V::~V()
{
delete primera;
delete siguiente;
}

文件 A.h:

#ifndef ARISTAPUNT_H
#define ARISTAPUNT_H

#include "V.cpp"

typedef int P;

class A
{
public:
P peso;
V* vertice;
A* siguiente;

A();
~A();
};

#endif // ARISTAPUNT_H

A.cpp:

#include "A.h"

A::A() //<- Error: 'A' does not name a type
{
peso = 0;
siguiente = 0;
vertice = 0;
}

A::~A() // <- Error: 'A' does not name a type
{
delete siguiente;
}

我怎样才能解决这个问题?

最佳答案

该消息表示类名不在范围内。 V.h 不应该包含 A.cpp,它应该包含 A.hA.h 包含 V.cpp 也是如此。

通常,您永远不想#include CPP 文件——从头文件或另一个CPP 文件。只有 .h 头文件被设计为包含在预处理器中。

在像这样的循环定义的情况下,您应该将类​​转发声明为您正在定义的指针,并放弃包含该类的 header :

#ifndef VERTICEPUNT_H
#define VERTICEPUNT_H

class A; // <<== Forward declare the class.

typedef char E;

class V
{
public:
E etiqueta;
V* siguiente;
A* primera;

V();
~V();
};

#endif // VERTICEPUNT_H

关于class - '[Class name]' 不命名 C++ 中的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17333934/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com