как вызвать этот конструктор? - PullRequest
0 голосов
/ 08 ноября 2011

Класс CameraPerspAsym расширяет CameraPersp и имеет этот конструктор:

CameraPerspAsym( int pixelWidth, int pixelHeight, float fov, float nearPlane, float farPlane ) 
: CameraPersp(pixelWidth, pixelHeight, fov, nearPlane, farPlane),
mLensShiftX(0.0f),
mLensShiftY(0.0f){};

(я поместил его в 4 строки для удобства чтения)

AFAIK кажется, что параметры ( int pixelWidth, int pixelHeight etc ... ) передаются в базовый класс. Но как насчет mLensShiftX(0.0f)?

Так как мне назвать этот конструктор?

Ответы [ 2 ]

1 голос
/ 08 ноября 2011

Назовите это так, как вы бы назвали любой конструктор. С фактическими параметрами, типы которых соответствуют типам формальных параметров или которые могут свободно преобразовываться в типы формальных параметров.

mLensShiftX и mLensShiftY по умолчанию установлены в плавающую точку 0.0; таким образом, я бы предположил, что вы можете изменить эти значения с помощью некоторого метода объекта.

1 голос
/ 08 ноября 2011

Вам нужно только позаботиться о предоставлении аргументов для конструктора дочернего класса, в данном случае int pixelWidth, int pixelHeight, float fov, float nearPlane, float farPlane.То, как он передает эти аргументы своему родителю или использует их для инициализации своих членов, является подробностью реализации и скрыто от вас.

* mLensShiftX(0.0f), mLensShiftY(0.0f) - это класс, явно инициализирующий две переменные экземпляра значением 0.0fи вам не нужно ничего делать при использовании класса CameraPerspAsym, чтобы это произошло, вы также не можете указать альтернативные значения.Вам придется использовать интерфейс, который предоставляет класс для изменения этих значений после запуска конструктора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...