C – 嵌套包含 – 避免’包括嵌套太深错误’
发布时间:2020-12-16 05:55:01 所属栏目:百科 来源:网络整理
导读:如果我想在我的C代码中具有以下连接,那么最好的方法是声明我的头文件,这样我就不会得到“包含嵌套太深的错误”? 在我的边缘类上,我有一些需要返回一个Node对象的函数.对于Edge类来说,我有一些需要返回Node对象的函数.但编译器不允许我有这个嵌套循环的东西.
如果我想在我的C代码中具有以下连接,那么最好的方法是声明我的头文件,这样我就不会得到“包含嵌套太深的错误”?
在我的边缘类上,我有一些需要返回一个Node对象的函数.对于Edge类来说,我有一些需要返回Node对象的函数.但编译器不允许我有这个嵌套循环的东西. Node.h #ifndef _NODE_h__ #define __NODE_h__ #include "Edge.h" public: Node(); ~Node(); void setName(string); string getName(); void addEdge(Edge*); vector<Edge* > getEdges() { return _edges; }; }; #endif Edge.h #ifndef _EDGE_h__ #define __EDGE_h__ #include "Node.h" class Edge { public: Edge(); Edge(bool); ~Edge(); bool hasBeenSeen() { return _seen; }; void reset() { _seen = false; }; // resets seen param to false Node* getSource() { return _source; }; Node* getTarget() { return _target; }; void setSource(Node* source) { _source = source; }; void setTarget(Node* target) { _target = target; }; }; #endif 解决方法
正如其他人所建议的那样,使用前卫.但也尝试宣传有关课程.您可能还必须在至少一个类中使用指针(而不是值),但是没有看到代码,我们无法告诉.
所以edge.h应该像这样: #ifndef EDGE_H #define EDGE_H class Node; // forward declaration Node functionB(); #endif 请注意,您必须在单独的C文件中定义您的函数,然后#include“node.h”. 如果这一切似乎都很复杂,那么你应该尝试简化你的设计.节点和边缘可能不需要彼此了解 – 单向依赖应该足够了. 最后,C中保留包含双下划线的名称 – 您不能在自己的代码中创建此类名称. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |