2013-06-05 4 views
1

Возможно ли использовать аргументы по умолчанию с списками инициализации членов?Списки инициализации членов с аргументами по умолчанию

Vector3::Vector3(double xI, double yI, double zI) 
: x(xI=0), y(yI=0), z(zI=0) 
{ 
} 

Конструктор всегда устанавливает x, y и z в 0, даже если вы вызываете его с настройкой аргументов.

+3

Почему не просто 'Vector3 :: Vector3 (double xI = 0, double yI = 0, double zI = 0) ...'? –

ответ

5
Vector3(double xI=0, double yI=0, double zI=0); 

Vector3::Vector3(double xI, double yI, double zI) 
    : x(xI), y(yI), z(zI) 
    { 
    } 

Кроме того, если вам интересно, что делает ваш код, это просто установив свои параметры, чтобы быть 0, а затем передавая значение из них (теперь 0) для инициализации членов.

+0

Не работает. 'error: нет соответствующей функции для вызова Vector3 :: Vector3 (double, double)' –

+0

@DantheMan: вам нужно добавить демонстрационный тестовый файл к вашему вопросу ... –

+0

- ваш конструктор доступен? (например, public?) – matt

0

Оператор присваивания = всегда возвращает то, что он присвоил левую переменную сторону, в вашем случае это вернуть 0, которые получают назначенную x, y и z.

Смежные вопросы