Вектор пустой Push_back вызывает ожидаемое первичное выражение перед токеном '{' - PullRequest
0 голосов
/ 05 января 2019

у меня проблемы с моим компилятором

Я использую кодовые блоки с gnugcc

и я хочу сделать:

table.push_back({""});

и там написано

main.cpp | 22 | ошибка: ожидаемое первичное выражение перед '{' токеном |

код работает в VS и других компиляторах ... Какого черта?

vector < car > AddCar()
{
    int i;
    vector < car > table;

    string check;
    table.push_back({""});

    for (i = 0; i < table.size(); i++)
    {
        cout << "marka: ";
        cin >> table[i].mark;
        cout << "model: ";
        cin >> table[i].model;
        cout << "cena: ";
        cin >> table[i].price;
        cout << endl;
         table.push_back(car());
   ...

да, я хочу пустой откат

1 Ответ

0 голосов
/ 05 января 2019

Эта ошибка возникает из-за того, что у вас, вероятно, не включен C ++ 11. Например, рассмотрим эту программу :

#include <iostream>
#include <string>
#include <vector>

struct Car {
    std::string a;
};

int main() {
    std::vector<Car> example;

    example.push_back({""});
}

При запуске с C ++ 98 в GCC 8.2.0 отображается сообщение об ошибке:

prog.cc: In function 'int main()':
prog.cc:12:23: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11
     example.push_back({""});
                       ^
prog.cc:12:27: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11
     example.push_back({""});
                           ^

Запуск этого с C ++ 11 исправляет ошибку.

...