打印在头文件中声明的变量时,C ++崩溃

时间:2012-08-10 19:21:57

标签: c++ opengl header crash runtime-error

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

Camera.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

Camera.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中,它可以正常工作并打印:

  

mainCamera x = 0

1 个答案:

答案 0 :(得分:1)

好吧,我明白了。而这一个是愚蠢的。我忘了在windows.h中包含Main.cpp,由于某种原因,它因停止打印而被停止(???)。它现在完美无缺。

#include <windows.h>