Передать массив, содержащий числа, в качестве параметра c ++

Вы также получаете эту ошибку, когда пытаетесь вставить JSON или другие данные со специальными символами без необходимых котировок, например:

UPDATE myTable SET myJSONfield = {};

изменить его на

UPDATE myTable SET myJSONfield = '{}';
2
задан HaskellPlease 16 January 2019 в 17:02
поделиться

3 ответа

Объявление списков с помощью [] не будет работать. Но вы можете использовать заключенные в скобки списки инициализаторов :

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>.

0
ответ дан ThatOneDeveloper 16 January 2019 в 17:02
поделиться

Я бы предложил использовать стандартные библиотечные контейнеры:

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 если фиксированный размер во время компиляции.

0
ответ дан kebs 16 January 2019 в 17:02
поделиться

В таком случае 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 }};

Живой пример .

0
ответ дан Marek R 16 January 2019 в 17:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: