gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 01:11:46 24 4
gpt4 key购买 nike

我不是专业程序员,所以请不要犹豫,说明显而易见的事情。

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

// Event.h
struct 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;
...

主要问题

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

非常感谢您。

最佳答案

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

  2. 我不确定您到底在问什么 - 但您可能想要 pass by reference不是指针?

  3. 我看不出有什么问题 - 尽管您可能还想提供其他比较( ><= ……)。

关于c++ - 在 std::multiset (C++) 中协调 typedef 和结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2624442/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com