我有一个在 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/