【问题标题】:C++ I can't update a vector from within a functionC ++我无法从函数中更新向量
【发布时间】:2013-05-02 02:08:25
【问题描述】:

我认为这里缺少一些基本的东西,但我有一个我制作的称为“事件”的结构向量,称为 eventTable,我试图从函数中访问它。我收到此错误:“无效参数' 候选者是:void push_back(const Event &)”有什么建议吗?

struct Event {
    enum TYPE {
    Arrival,
    CPUBurstCompletion,
    IOCompletion,
    TimerExpired
  };
  double time;
  TYPE type;
  Event(Event::TYPE type, double time)
      : type(type),
        time(time) {}
};

vector<Event> eventTable;

void createEvent(Event::TYPE type, double time){
    Event newEvent(Event::TYPE type, double time);
    eventTable.push_back(newEvent);
}

【问题讨论】:

  • 这让我想起了 MVP,但实际上不是。
  • 这个问题最可能的原因是复制/粘贴错误。

标签: c++ function vector structure


【解决方案1】:

不包括类型。你想构造一个对象,而不是声明一个函数。这构造了一个对象:

Event newEvent(type, time);

【讨论】:

  • “你正在构造一个对象,而不是声明一个函数”——很好的歧义......根据“是”是否意味着现有代码正在做什么或意图是什么来读取任何一种方式。跨度>
  • 我将编辑我的答案,以帮助那些没有大脑的人。
【解决方案2】:
Event newEvent(Event::TYPE type, double time);

这不是创建Event 类的对象。向量eventTable 存储Event 的对象,但是,您没有以当前方式提供Event 的对象。你在声明一个函数。

试试:

Event newEvent(type, time);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-09
    • 1970-01-01
    • 1970-01-01
    • 2021-04-03
    • 1970-01-01
    相关资源
    最近更新 更多