ГЭС:В противном случае вернуть unique_ptr
class Camera {
public:
Camera(float FOV, float nearPlane, float farPlane);
std::unique_ptr<glm::mat4x4> getProjectionMatrix();
private:
std::unique_ptr<glm::mat4x4> projectionMatrix;
};
CPP:
Camera::Camera(float FOV, float nearPlane, float farPlane) {
float aspectRatio = DisplayManager::displayWidth/DisplayManager::displayHeight;
projectionMatrix = std::make_unique<glm::mat4x4>();
*projectionMatrix = glm::perspective(FOV, aspectRatio, nearPlane, farPlane);
}
std::unique_ptr<glm::mat4x4> Camera::getProjectionMatrix() {
//std::unique_ptr<glm::mat4x4> projectionMatrix = std::make_unique<glm::mat4x4>();
//*projectionMatrix = glm::perspective(90.0f, 1.333f, 0.1f, 1000.0f);
return std::move(projectionMatrix);
}
Посмотрите на две строки комментария. Программа будет компилировать, будут ли они прокомментированы или нет, но если они есть, данные будут повреждены.
Как я могу написать getter, который возвращает unique_ptr, который является частным членом класса? Как правильно установить unique_ptr в конструкторе?
Почему вы хотите верните 'unique_ptr', для чего он будет использоваться? – Galik
Что вы делаете с этой матрицей проекций? Мне кажется, что вам будет хорошо с возвратом указателя наблюдателя вместо того, чтобы превращать его в состояние только для назначения. – krzaq
Указатель наблюдателя тоже прекрасен. Мне нужно передать матрицу в средство визуализации, чтобы оно могло загрузить его в шейдер. – Karlovsky120