Вы также получаете эту ошибку, когда пытаетесь вставить JSON или другие данные со специальными символами без необходимых котировок, например:
UPDATE myTable SET myJSONfield = {};
изменить его на
UPDATE myTable SET myJSONfield = '{}';
Объявление списков с помощью []
не будет работать. Но вы можете использовать заключенные в скобки списки инициализаторов :
double b[] = {1.0, 2.0};
double c[] = {5.3, 4.7};
Foo f = Foo(1, b, c);
Заметьте, однако, что вы не можете сделать это:
Foo f = Foo(1, {1.0, 2.0}, {5.3, 4.7});
Почему? Потому что списки инициализатора не могут конвертировать встроенные в массивы. Вы должны объявить массивы явно. Если вы хотите сделать это встроенным, используйте std::vector<double>
.
Я бы предложил использовать стандартные библиотечные контейнеры:
class Foo{
public:
Foo(int, const std::vector<double>& vv ) : v(vv)
{
// other stuff here
}
std::vector<double> v;
};
Вы можете передавать значения таким образом, используя агрегатную инициализацию :
int main()
{
Foo f( 1, {1.1,1.2,1.3} );
}
Или использовать [114 ] std::array
если фиксированный размер во время компиляции.
В таком случае std :: initializer_list - лучший выбор.
class Foo{
public:
Foo(int n, std::initializer_list<double> a, std::initializer_list<double> b);
};
Foo foo { 32, {}, { 2, 3, 1, 2 }};