C ++我无法从函数中更新向量

Posted

技术标签:

【中文标题】C ++我无法从函数中更新向量【英文标题】:C++ I can't update a vector from within a function 【发布时间】: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,但实际上不是。 这个问题最可能的原因是复制/粘贴错误。 【参考方案1】:

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

Event newEvent(type, time);

【讨论】:

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

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

试试:

Event newEvent(type, time);

【讨论】:

以上是关于C ++我无法从函数中更新向量的主要内容,如果未能解决你的问题,请参考以下文章

为啥 scala 函数中的块变量在执行内部块后无法更新?

无法从网格更新表(过程或函数 spExcelGridTestUpdateTable 指定了太多参数)

从存储的函数返回更新的行

MySql 错误:无法更新存储函数/触发器中的表,因为它已被调用此存储函数/触发器的语句使用

在 MySql 更新语句中使用函数

c ++:OOP:如何在单独的头文件中更新数组?