с++: массив в качестве параметра по умолчанию
подскажите пожалуйста, а то голова что-то не варит уже, как реализовать следующую вещь:
есть функция, которая в качестве параметра принимает указатель:
void func(int* data)
можно ли в качестве параметра по умолчанию указать статический массив с заданным кол-вом элементов, что-то типа такого
void func(int* data = (int*)int[1024])
а было бы еще лучше, если бы по умолчанию указывался заполненный нулями массив
конечно это можно сделать через std::vector и ссылку или через собственный класс, но можно ли как-то сделать через простые типы?
Ответы (2 шт):
Если вам принципиально значение по умолчанию в интерфейсе, то используйте std::array.
void func(int* data = std::array<int, 1024>().data())
Но нормальным решением будет ставить значение по умолчанию nullptr и уже в самом теле функции создавать массив, если data == nullptr.
Всё очень просто.
void func(int* data){
..}
void func(void){
int data[1024]={};
func(data); }
Аргументы по-умолчанию это плохой стиль. Проще так.