@IliaNeverov

Почему функция не видит public переменную из другого класса?

Всем доброго дня! Скажите пожалуйста почему функция не видит public переменную из другого класса?

//все нужные include тут прописаны просто я их скрыл
class Window
{
private:
	int windowWidth, windowHeight;
	float windowWidthPROJ, windowHeightPROJ;
	void setContextCurrent();
public:
	GLFWwindow* mWindow;
	Window(const std::string& title, int width, int height);
	glm::mat4 view;
	void loop();
	~Window();
};

#include <GL/glew.h>
#include <GL/gl.h>
#include <GLFW/glfw3.h>
#include <glm/glm.hpp>
#include <glm/gtc/matrix_transform.hpp>
#include <glm/gtc/type_ptr.hpp>
#include "Camera.h"
#include "Window.h"

void Camera::moveCamera()
{	
        if ( glfwGetKey(mWindow, GLFW_KEY_W)) {  //тут выскаивает что идентификатор mWindow не определен
		position += cameraFront * 0.01f;
	}
	view = glm::lookAt(position, position + cameraFront, cameraUp);
	return glm::mat4(view);
}
  • Вопрос задан
  • 541 просмотр
Решения вопроса 1
@romancelover
программист C++ под Linux
mWindow определён в классе Window, а обращаются к нему в другом классе Camera, в котором члена mWindow нет. Как компилятор узнает о связи между классами Camera и Window, чтобы один использовал члены другого?
Можно обратиться к нему в том случае, если Camera будет наследником Window (но в данной ситуации это скорее всего не нужно), или в Camera будет член типа Window или указатель на него (Window* _window) тогда _window->mWindow будет допустимо.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
Adamos
@Adamos
Философы древности собирали своих учеников и беседовали, позволяя им задавать вопросы и тем приобретать мудрость.
Но С++ учится не так.
Ответ написан
Комментировать
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Потому что это не переменная, а свойство и оно не определено вне конкретного элемента класса.
Ответ написан
Комментировать
1. Не переменная, а поле.
2. К полю можно обратиться только на экземпляре класса
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
CTRL+ Москва
от 250 000 до 320 000 ₽
CTRL+ Москва
от 200 000 до 300 000 ₽
CTRL+ Белград
от 250 000 до 320 000 ₽
22 нояб. 2024, в 00:55
500 руб./за проект
21 нояб. 2024, в 23:30
300000 руб./за проект
21 нояб. 2024, в 22:21
3000 руб./в час