-2

我正在Camera用 c++ 创建一个用于 OpenGL 的类。当我尝试打印在 中声明的任何变量时Camera.h,程序崩溃。但是如果我设置或获取变量的值它不会崩溃我做错了什么?

相机.h

    #ifndef CAMERA_H
    #define CAMERA_H

    class Camera
    {
        public:
            Camera();
            Camera(float xP, float yP, float zP);
            void move(float x, float y, float z);

        protected:
        private:
            float xPos, yPos, zPos;
    };

    #endif // CAMERA_H

相机.cpp

    #include "Camera.h"
    #include <iostream>
    #include <GL/glut.h>

    using namespace std;

    Camera::Camera()
    {
    }

    Camera::Camera(float xP, float yP, float zP)
    : xPos(xP), yPos(yP), zPos(zP)
    {
    }

    void Camera::move(float x, float y, float z)
    {
        glTranslatef(-x, -y, -z);
        //None of this crashes:
        xPos = 1;
        yPos = xPos;
        //Crashes here:
        cout << "mainCamera x = " << xPos << endl;
    }

我收到的崩溃消息是:

opengl.exe 遇到问题,需要关闭。对此造成的不便,我们表示歉意。


编辑

如果我把线路float xPos, yPos, zPos;放在公共部分Camera.h,然后打电话

    Camera mainCamera(0.0f, 0.0f, 0.0f);
    cout << "mainCamera x = " << mainCamera.xPos << endl;

...在 中main.cpp,它工作得很好并打印:

主摄像头 x = 0

4

1 回答 1

1

嗯,我想通了。而这个是一个愚蠢的。我忘了包括在内windows.hMain.cpp出于某种奇怪的原因,它阻止了浮点数被打印出来(???)。它现在完美运行。

#include <windows.h>
于 2012-08-10T20:35:42.190 回答