-2

CameraOpenGL に使用するクラスを c++ で作成しています。で宣言された変数を出力しようとすると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

カメラ.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.hに含めるのを忘れてMain.cppいました。何らかの理由でフロートが印刷されなくなりました (???)。今では完全に機能します。

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