Я могу сделать это в C++ (если да, каков синтаксис?):
void func(string* strs) {
// do something
}
func({"abc", "cde"});
Я хочу передать массив для функционирования, не инстанцируя его как переменной. Спасибо за предложения.
Это невозможно сделать в текущем C ++, как определено в C ++ 03.
Функция, которую вы ищете, называется «составные литералы». Он присутствует в языке C, как определено в C99 (конечно, с возможностями, специфичными для C), но не в C ++.
Аналогичная функция запланирована и для C ++, но ее пока нет.
Используйте переменную функцию для передачи неограниченной нетипизированной информации в функцию. Затем делайте с переданными данными все, что хотите, например, запихивайте их во внутренний массив.
Как написано, вы не можете этого сделать. Функция ожидает указатель на строку. Даже если вы смогли передать массив как литерал, вызов функции вызовет ошибки, поскольку литералы считаются константами (таким образом, массив литералов будет иметь тип const string *
, а не string *
, как ожидает функция).
Я не думаю, что это можно сделать в C ++ 98, но можно с initializer_lists в C ++ 1x.