大佬教程收集整理的这篇文章主要介绍了c – 头文件之间的循环依赖性,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我们来看一个例子:
tree.h中:
#ifndef TREE_20100118 #define TREE_20100118 #include <vector> #include "Node.h" class Tree { int counter_; std::vector<Node> nodes_; public: Tree() : counter_(0) {} void start() { for (int i=0; i<3; ++i) { Node node(this,i); this->nodes_.push_back(node); } nodes_[0].hi(); // calling a function of Node } void incCnt() { ++counter_; } void decCnt() { --counter_; } }; #endif /* TREE_20100118 */
Node.h:
#ifndef NODE_20100118 #define NODE_20100118 #include <iostream> //#include "Tree.h" class Tree; // compile error without this class Node { Tree * tree_; int id_; public: Node(Tree * tree,int id) : tree_(tree),id_(id) { // tree_->incCnt(); // trying to call a function of Tree } ~Node() { // tree_->decCnt(); // problem here and in the constructor } void hi() { std::cout << "hi (" << id_ << ")" << endl; } }; #endif /* NODE_20100118 */
呼叫树:
#include "Tree.h" ... Tree t; t.start();
这只是一个简单的例子来说明问题.所以我想要的是从Node对象调用Tree的函数.
更新#1:感谢您的回答.我尝试像在Java中一样解决问题,即每个类只使用一个文件.看来我必须开始分离.cpp和.h文件……
以上是大佬教程为你收集整理的c – 头文件之间的循环依赖性全部内容,希望文章能够帮你解决c – 头文件之间的循环依赖性所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。