在std :: multiset(C ++)中协调typedef和结构

时间:2010-04-12 18:35:45

标签: c++ struct typedef multiset

我不是一名专业的程序员,所以请毫不犹豫地说清楚。

我的目标是使用名为std::multiset的{​​{1}}容器(typedef EventMultiSet)来组织currentEvents类型的结构列表,并拥有类成员{ {1}}偶尔会向Event添加新的Host结构。结构应该按其成员之一,时间排序。我不确定我要做的有多少是合法的; g ++编译器报告(在“Host.h”中)“错误:'EventMultiSet'尚未声明。”这就是我正在做的事情:

Event

主要问题

  1. 我应该在哪里包含EventMultiSet typedef?
  2. 我的EventMultiSet指针明显有问题吗?
  3. 我的Event结构中的比较函数(理论上)是否正常?
  4. 非常感谢你。

2 个答案:

答案 0 :(得分:2)

  1. 编译器错误只是因为你的typedef位于错误的地方 - 只有main.cpp知道它。看起来你可能想在Event.h中使用它,其他两个都包括在内。

  2. 我不确定你究竟在问什么 - 但是你可能想要pass by reference而不是指针?

  3. 我认为它没有任何问题 - 尽管你可能想要提供其他比较(><=,...)。

答案 1 :(得分:1)

鉴于你征求了“显而易见”的陈述,我注意到的一件事是你没有#include <set>,这是为了让你的编译器知道multiset是什么,或者#include <functional>需要了解less的含义:

// main.cpp
#include "Event.h"
#include <set>
#include <functional>
...
typedef std::multiset< Event, std::less< Event > > EventMultiSet;
EventMultiSet currentEvents;
EventMultiSet * cePtr = &currentEvents;