交叉引用类并返回映射<字符串,类>
Cross reference-class and return map<string, Class>
有两个问题我不太明白,请多指教。
在我的程序有两个类Parser
和Rules
。在Parser
类中,我应该使用extract_rules()
函数返回带有规则的映射,但我遇到了两个问题:
-
如何在
parser.h
文件中引用Rules
?规则是需要的,因为extract_rules()
函数应该返回map<int, Rules>
只做#include rules.h
触发另一串错误… -
当
extract_rules()
的返回类型设置为map<int, Rules>
时,有一个编译错误,我该如何解决这个问题?如果返回类型为void
,则不会遇到任何问题,程序可以正常运行。
rules.h
Class Rules
{
public:
string rule_name;
string function_name;
}
parser.h
Class Parser
{
public:
map<int, Rules> extract_rules();
}
parser.cpp
using namespace std;
map<int, Rules> extract_rules()
{
map<int, Rules> rules_map;
int count;
Rules r;
r.rule_name = "Rule 1";
r.function_name = "Function 1";
rules_map.emplace(count, r);
return rules_map;
}
提醒不要在累的时候编码:忘记在Rules.h中设置#include <map>
。谢谢每一个人。Upvoted .
您必须使用宏来限制每个头文件中的多个包含(头文件),如下所示:-
#ifndef RULES_H
#define RULES_H
#include <map> //header file for map
#include <string> //header file for string
using namespace std;
#endif //RULES_H
您必须在parser.cpp中定义函数,如下所示:-
map<int, Rules> Parser::extract_rules(){}
试着写
#pragma once
放在rules.h的开头,然后将其包含在parser.h中我也看不见
#include <map>
也应该在parser.h.
相关文章:
- 请解释这句话(cout<<1+int((a<b)^((b-a)&1) )<<endl
- 呼叫运营商<<临时
- 如何防止clang格式在流运算符调用之间添加换行符<<
- <<操作员在下面的行中工作
- EASTL矢量<向量<int>>连续的
- C - 创建矢量&lt; vector&lt; double&gt;&gt;矩阵具有分配而不是inizializ
- 为什么将此对向量&lt; map&lt; int,int&gt;&gt;中的地图进行更新.失败
- C :对矢量进行排序&lt; struct&gt;(结构有2个整数)基于结构的整数之一
- 明确的专业化“ CheckIntmap&lt;&gt;”实例化
- 什么是模板&lt;&gt;inline bla bla
- 编辑C Qlist&lt; object*&gt; gt;QML代码和一些QML警告中的模型
- eigen :: llt&lt;eigen :: matrixxd&gt;具有不完整的类型
- 错误,包括&lt; ctype&gt;在原子上使用C 11
- std::vector<;uint8_t>;当C++11/14启用时,手动复制而不是调用memcpy
- 如何加入向量&lt; int&gt;到C 中的单个INT
- 是std :: set&lt; std :: future&gt;不可能存在
- 是numeric_limits&lt; int&gt; :: is_modulo从逻辑上矛盾
- opencv 2.4.7在iOS错误背景_segm.hpp #include&lt; list&gt;未找到
- 在修改列表后,std :: list&lt; t&gt; :: end()的值是否会更改
- ///<评论></评论>在Visual Studio中