Ошибка C2664: невозможно преобразовать параметр 1 в const std::allocator

187
29 апреля 2018, 21:40
struct Expression {
    Expression(std::string token) : token(token) {};
    Expression(std::string token, Expression a) : token(token), args( a ) {};
    Expression(std::string token, Expression a, Expression b) : token(token), args( a, b ) {};
    std::string token;
    std::vector<Expression> args;
};

Ошибка в 3 строке.

Собственно, сама ошибка: error C2664: std::vector<_Ty>::vector(const std::allocator<_Ty> &): невозможно преобразовать параметр 1 из "Expression" в "const std::allocator<_Ty> &"

Из-за чего ошибка? Как исправить? Заранее спасибо.

Answer 1

Expression(std::string token, Expression a) : token(token), args( a ) {}; заменить на:

Expression(std::string token, Expression a): token(token) {
    this->args.push_back(a);
}
Answer 2

Добавить фигурные скобки

Expression(std::string token, Expression a) : token(token), args({ a }) {}
Expression(std::string token, Expression a, Expression b) : token(token), args({ a, b }) {}

Или можно даже без круглых скобок

Expression(std::string token, Expression a) : token(token), args{ a } {}
Expression(std::string token, Expression a, Expression b) : token(token), args{ a, b } {}
READ ALSO
Удаление элементов из очереди

Удаление элементов из очереди

Имеется часть кода:

231
Найти k1-количество одинаковых элементов в двумерном массиве c++; [требует правки]

Найти k1-количество одинаковых элементов в двумерном массиве c++; [требует правки]

Найти k1-количество одинаковых элементов в двумерном массиве c++;

193
Почему не работают мои запросы sql в qt

Почему не работают мои запросы sql в qt

Вот обычный код подклк бд, простой запрос

185
Вызов конструктора после объявления

Вызов конструктора после объявления

Вопрос может показатся очень глупым, но все же меня интересует как вызвать конструктор после объявление поляЯ пробовал вот так но у меня...

194