我不是专业的程序员,所以请不要犹豫。我的目标是使用名为std::multiset的typedef EventMultiSet容器(currentEvents)来组织类型为Event的结构列表,并让类Host的成员偶尔将新的Event结构添加到。这些结构应该按其成员之一的时间排序。我不确定我想做的多少合法? g ++编译器报告(在“ Host.h”中)“错误:尚未声明'EventMultiSet'。”这是我在做什么:// Event.hstruct Event { public: bool operator < ( const Event & rhs ) const { return ( time < rhs.time ); } double time; int eventID; int hostID;};// Host.h...void calcLifeHist( double, EventMultiSet * ); // produces compiler error...void addEvent( double, int, int, EventMultiSet * ); // produces compiler error// Host.cpp#include "Event.h"...// main.cpp#include "Event.h"...typedef std::multiset< Event, std::less< Event > > EventMultiSet;EventMultiSet currentEvents;EventMultiSet * cePtr = &currentEvents;...主要问题 我应该在哪里包括EventMultiSet typedef? 我的EventMultiSet指针显然有问题吗? 我的事件结构中的比较功能(理论上)可以吗?提前非常感谢您。 最佳答案 编译器错误仅是因为您的typedef放在错误的位置-只有main.cpp知道它。看起来您可能在Event.h中都想要它,其他两个都包含了。我不确定您要问的是什么-但您可能想不通过指针pass by reference吗?我没有发现任何问题-尽管您可能也想提供其他比较(>,<=,...)。关于c++ - 在std::multiset(C++)中协调typedef和结构,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2624442/
10-12 20:40