2013-05-02 1 views
0

Я думаю, что здесь есть что-то базовое, но у меня есть вектор структуры, которую я создал под названием Event, называемой eventTable, с которой я пытаюсь получить доступ изнутри функция. Я получаю эту ошибку: «Недопустимые аргументы» Кандидаты: void push_back (const Event &) «Любые предложения?C++ Я не могу обновить вектор изнутри функции

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); 
} 
+0

Это напоминает мне MVP, за исключением того, что это действительно не так. – chris

+1

Наиболее вероятной причиной этой проблемы является ошибка копирования/вставки. – paddy

ответ

2

Не включают типы. Вы хотите построить объект, а не объявлять функцию. Это конструирует объект:

Event newEvent(type, time); 
+0

спасибо! это работает. – Erk

+0

«Вы строите объект, а не объявляете функцию» - славная двусмысленность ... читается в любом случае в зависимости от того, «есть ли», означает, что делает существующий код или что это за намерение. –

+0

Я отредактирую свой ответ на благо тех, кто не обладает мозгом. – paddy

1
Event newEvent(Event::TYPE type, double time); 

Это не создавать объект класса Event. Вектор eventTable хранит объекты Event, однако вы не предоставляете объекты Event в своем текущем способе. Вы объявляли функцию.

Try:

Event newEvent(type, time);