Значение по умолчанию для параметра структуры

Допустим, у меня есть следующая структура:

struct myStruct
{
int x;
int y;
int z;
int w;
};

Я хочу инициализировать эту структуру значением по умолчанию при вызове следующей функции. Если это поможет, я ищу простую инициализацию нуля.

void myFunc(myStruct param={0,0,0,0})
{
...
}

Этот код, однако, дает мне ошибку компиляции. Я пробовал VS2003 и VS2008.

НОТА: Я смотрел на другие ответы, упоминающие использование конструктора. Однако я хочу пользователь, чтобы увидеть, какие значения я использую для инициализации.

5

Решение

Добавление конструктор по умолчанию в ваш MyStruct решит вашу проблему

struct myStruct {
myStruct(): x(0),y(0), z(0), w(0) { }   // default Constructor
int x, y, z, w;
};

Объявление функции:

void myFunc(myStruct param = myStruct());
6

Другие решения

Для современных компиляторов 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

2

По вопросам рекламы [email protected]