Допустим, у меня есть следующая структура:
struct myStruct
{
int x;
int y;
int z;
int w;
};
Я хочу инициализировать эту структуру значением по умолчанию при вызове следующей функции. Если это поможет, я ищу простую инициализацию нуля.
void myFunc(myStruct param={0,0,0,0})
{
...
}
Этот код, однако, дает мне ошибку компиляции. Я пробовал VS2003 и VS2008.
НОТА: Я смотрел на другие ответы, упоминающие использование конструктора. Однако я хочу пользователь, чтобы увидеть, какие значения я использую для инициализации.
Добавление конструктор по умолчанию в ваш MyStruct решит вашу проблему
struct myStruct {
myStruct(): x(0),y(0), z(0), w(0) { } // default Constructor
int x, y, z, w;
};
Объявление функции:
void myFunc(myStruct param = myStruct());
Для современных компиляторов C ++, которые полностью реализуют инициализацию значений, достаточно иметь следующее значение по умолчанию, инициализированное значением, для инициализации нуля членов-данных myStruct:
myFunc(myStruct param=myStruct())
Для других компиляторов вы должны использовать что-то вроде этого:
myStruct zeroInitilizer() {
static myStruct zeroInitilized;
return zeroInitilized;
}
myFunc(myStruct param=zeroInitilizer())
Чтобы избежать особенностей компилятора, рекомендуется использовать http://www.boost.org/doc/libs/1_53_0/libs/utility/value_init.htm