c++ - 结构在单独的头文件中导致 C++ 中的问题

标签 c++ struct enums function-declaration

我有一个在 Class Parser 中定义的 struct Tree。我在 Parser 中定义了将 Tree 作为输入的方法。

void Parser::InputTree(const Tree& input) {
//uses data from Tree
}

一切似乎都运行良好。但是后来我需要在类外使用 Tree 。所以我决定在一个单独的头文件中定义struct Tree。我将此 header 包含在 Parser 的 header 文件中。虽然我在 Parser 的头文件中没有看到错误,但源文件在我的 Eclipse 上显示错误。表示未找到指向方法 InputTree 的成员声明。

我的问题是,首先,在单独的 header 中定义结构是否正确?第二,我做错了什么?第三,我还有一些 enum 类型我想跨类使用。我在哪里定义它?

最佳答案

正确的结构:

parser.h

#ifndef _PARSER_H_
#define _PARSER_H_
#include "tree.h"
class Parser {
   void InputTree(const Tree& input);
};

#endif /*_PARSER_H_*/

parser.cpp

#include "parser.h"
void Parser::InputTree(const Tree& input){
 // use data from Tree
}

tree.h

#ifndef _TREE_H_
#define _TREE_H_

struct Tree {
   //nodes
};
#endif /*_TREE_H_*/

包含 parser.h 包含 tree.h 因此,struct Tree 在主编译单元中可用。

关于c++ - 结构在单独的头文件中导致 C++ 中的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15327266/

相关文章:

c++ - 在 unordered_map 中放置 unordered_set

c - 结构体数组 - 哈希表

java - 在需要字符串的注释中使用的枚举值

c++ - 为什么当我传递对此函数的引用时它不起作用?

c++ - objective-c++ 如何将方法添加到 c++ 类中

dictionary - Go中通过反射为struct成员赋值

java - 关于 Java 中枚举的问题

c# - 如何从 EventLogEntryType 枚举中获取 int 值

c++ - 在 Windows 10 上创建缓冲区溢出

c# - 另一个 PInvoke - 错误消息显示未找到源?