转发声明导致头文件出现问题
Forward declaration causing problems in header file
我正在尝试了解链接列表和节点,但我不理解我在Node结构中遇到的这个错误。这是一个运行良好的代码,在头中没有前向声明
#ifndef SENTENCE_H
#define SENTENCE_H
#include"word.h"
class Sentence{
public:
struct Node{
Word data;
Node * next;
};
//etc
#endif // SENTENCE_H
但后来我不得不添加功能原型,要求我将其更改为
#ifndef SENTENCE_H
#define SENTENCE_H
class Sentence;
#include"paragraph.h"
#include"word.h"
class Sentence{
public:
struct Node{
Word data;
Node * next;
};
//etc, etc
现在,当我试图编译它时,我得到了一个错误:字段"data"的类型不完整。如果我注释掉这个结构,一切都很好。我做错了什么?我相信这是制作节点的正确方法,不是吗?"如在句子中"是一个包含单词的节点的链接列表。因此,"数据"是一个字,下一个是指向节点的指针。由于include语句,Word类型应该是可以接受的,我对代码etc部分的函数原型"Word first();"没有问题,那么为什么它告诉我"data"的类型不完整呢?
我的水晶球告诉我,您的问题与正向声明无关,而是与循环头包含有关。同一个球告诉我,在某个时刻word.h
开始直接或间接地包括sentence.h
。现在,由于您的sentence.h
也包含word.h
,因此产生了循环包含循环。
除了奇怪的"无法解释的"编译错误之外,循环包含从来没有取得任何成就。
相关文章:
- 使用mongocxx驱动程序时包含头文件问题
- 在WSL:configure_file上对config_file的每次调用都失败:配置文件时出现问题
- 编译要在英特尔Hyperscan中使用的.cc文件时出现问题
- 使用 seekg() 读取C++中的文件时出现问题
- sqlite3 和生成文件中的链接出现问题
- C++头文件和类实现出现问题
- 用户输入字符串的文件附加问题..C++
- node-gyp 的先有鸡还是先有蛋的问题:指向依赖项中的头文件
- 读取文件并将其存储在unordered_map中时出现问题
- 编译 llvm 插件时出现问题:llvm/Config/llvm-config.h:没有这样的文件或目录
- 我在使用C++文件时遇到了一些问题
- 在Linux上使用Clang / OLLVM交叉编译helloworld Windows可执行文件时的问题
- 将文件复制到自定义位置,存在字符串转换问题
- DirectX12 的问题:"d3dApp.h":没有这样的文件或目录
- (ODR 使用问题)在不同文件中priority_queue名称相同的结构
- C++模板编程设计问题 - 根据输入文件返回不同的类型
- 读取制表符分隔的文件时出现问题 C++
- 当我在 CLion 中读取数组中的 txt 文件时C++编码问题
- 使用 RapidXML 解析大型 XML(大小大于 65 KB)文件时出现问题
- C++:读取.BMP文件时出现问题;文件结束时间早于预期