Как передать массив для функционирования без переменного инстанцирования в C++

Я могу сделать это в C++ (если да, каков синтаксис?):

void func(string* strs) {
    // do something
}
func({"abc", "cde"});

Я хочу передать массив для функционирования, не инстанцируя его как переменной. Спасибо за предложения.

9
задан yegor256 4 May 2010 в 16:36
поделиться

4 ответа

Это невозможно сделать в текущем C ++, как определено в C ++ 03.

Функция, которую вы ищете, называется «составные литералы». Он присутствует в языке C, как определено в C99 (конечно, с возможностями, специфичными для C), но не в C ++.

Аналогичная функция запланирована и для C ++, но ее пока нет.

11
ответ дан 4 December 2019 в 20:22
поделиться

Используйте переменную функцию для передачи неограниченной нетипизированной информации в функцию. Затем делайте с переданными данными все, что хотите, например, запихивайте их во внутренний массив.

variadic function

0
ответ дан 4 December 2019 в 20:22
поделиться

Как написано, вы не можете этого сделать. Функция ожидает указатель на строку. Даже если вы смогли передать массив как литерал, вызов функции вызовет ошибки, поскольку литералы считаются константами (таким образом, массив литералов будет иметь тип const string * , а не string * , как ожидает функция).

0
ответ дан 4 December 2019 в 20:22
поделиться

Я не думаю, что это можно сделать в C ++ 98, но можно с initializer_lists в C ++ 1x.

0
ответ дан 4 December 2019 в 20:22
поделиться
Другие вопросы по тегам:

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