C使用另一个类的方法声明
发布时间:2020-12-16 09:42:14 所属栏目:百科 来源:网络整理
导读:我开始学习C(来自 Java),所以请耐心等待. 我似乎无法接受我的方法声明来接受我所制作的课程. ‘Context’ has not been declared 我想我不理解一个基本概念,但我不知道是什么. Expression.h #include "Context.h" class Expression { public: void interpret
我开始学习C(来自
Java),所以请耐心等待.
我似乎无法接受我的方法声明来接受我所制作的课程.
我想我不理解一个基本概念,但我不知道是什么. Expression.h #include "Context.h" class Expression { public: void interpret(Context *); // This line has the error Expression(); virtual ~Expression(); }; Context.h #include <stack> #include <vector> #include "Expression.h" class Context { private: std::stack<Expression*,std::vector<Expression*> > theStack; public: Context(); virtual ~Context(); }; 解决方法
您必须在Context中转发声明Expression,反之亦然(或两者),否则您将具有循环依赖.例如,
Expression.h: class Context; // no include,we only have Context*. class Expression { public: void interpret(Context *); // This line has the error Expression(); virtual ~Expression(); }; Context.h: #include <stack> #include <vector> class Expression; // No include,we only have Expression* class Context { private: std::stack<Expression*,std::vector<Expression*> > theStack; public: Context(); virtual ~Context(); }; 您可以执行前向声明,因为不需要完整的类定义,因为在每种情况下您只是指向其他类的指针.您可能需要实现文件中的包含(即Expression.cpp中的#include“Context.h”和Context.cpp中的#include Expression.h). 最后,记得将include guards放入头文件中. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |