2014-11-18 4 views
0

에서 컴퓨터 게임 프로그래밍에 대한 학자 클래스의 전용 인스턴스를하고있어 액세스. 개체 위치 및 이미지를 제공하기 위해 .cpp 파일에서 .h 파일의 개인 Texture2D 및 벡터 2 형식에 액세스하려고합니다.나는 현재 C++을 공부하고, 다른 클래스

이것은 Player.cpp이는 Player.h입니다

#include "Player.h" 
#include <sstream> 


Player::Player(int argc, char* argv[]) : Game(argc, argv), _cPlayerSpeed(0.1f), _cPlayerFrameTime(250) 
{ 
    //Player Inits 
_playerDirection; 
_playerFrame = 0; 
_playerCurrentFrameTime = 0; 
_playerSpeedMultiplier = 1.0f; 

//Init of Important Game Aspects 
Graphics::Initialise(argc, argv, this, 1024, 768, false, 25, 25, "Genocide: Remastered", 60); 
Input::Initialise(); 
Graphics::StartGameLoop(); //Start of Game Loop, calls Update and Draw in game loop. 
} 


Player::~Player() 
{ 
} 

void Player::Input(int elapsedTime, Input::KeyboardState* state) 
{ 
    // Checks for directional keys pressed 
    if (state->IsKeyDown(Input::Keys::D)) 
    { 
     _playerPosition->X += _cPlayerSpeed * elapsedTime; 
    } 

} 



/// <summary> All content should be loaded in this method. </summary> 
void Player::LoadContent() 
{ 
    _playerPosition = new Vector2(); 
    _playerTexture = new Texture2D(); 
    _playerTexture->Load(" ", false); 
    _playerSourceRect = new Rect(0.0f, 0.0f, 0, 0); 
} 

/// <summary> Called every frame - update game logic here. </summary> 
void Player::Update(int elapsedTime) 
{ 

} 

/// <summary> Called every frame - draw game here. </summary> 
void Player::Draw(int elapsedTime) 
{ 

} 

파일

말 그대로 복사하여 내 강사와 함께 작업 봤는데 뭔가를 붙여 및 변경했습니다
#pragma once 

#ifdef WIN32 
    #ifndef _DEBUG 
     #pragma comment(linker, "/SUBSYSTEM:windows /ENTRY:mainCRTStartup") 
    #endif 
#endif 

#include "S2D/S2D.h" 
using namespace S2D; 

class Player : public Game 
{ 
public: 
    Player(int argc, char* argv[]); 
    ~Player(); 
    /// <summary> All content should be loaded in this method. </summary> 
    void virtual LoadContent(); 

    /// <summary> Called every frame - update game logic here. </summary> 
    void virtual Update(int elapsedTime); 

    /// <summary> Called every frame - draw game here. </summary> 
    void virtual Draw(int elapsedTime); 

private: 
    Vector2* _playerPostion; 
    Rect* _playerSourceRect; 
    Texture2D* _pacmanTexture; 
    const float _cPlayerSpeed; 
    const int _cPlayerFrameTime; 

    int _playerDirection; 
    int _playerFrame; 
    int _playerCurrentFrameTime; 
    float _playerSpeedMultiplier; 

    void Input(int elapsedTime, Input::KeyboardState* state); 
    void CheckPaused(Input::KeyboardState* state, Input::Keys pauseKey); 
    void CheckViewportCollision(); 
    void UpdatePlayer(); 
}; 

변수, 유형 및 인스턴스화 선언과 그의 작업. 왜 내 것이 아닌지 궁금해. 도움을 많이 주시면 감사하겠습니다.

많은 감사,

Ryan.

+2

오류가 무엇입니까? –

+0

'_playerPosition': 선언되지 않은 식별자, '_playerTexture'와 같은 '_lowercase'를 사용하여주의 –

+0

. '_UPPERCASE'는 파일 스코프에서 사용되는 경우'_lowercase'와 마찬가지로 C++에서 예약됩니다. 너는 지금 괜찮아. 그냥 조심해. – Bathsheba

답변

4

헤더의 경우 Texture2D*_pacmanTexture이고 구현시 _playerTexture이라고합니다. 마찬가지로 헤더에 _playerPosition의 맞춤법 오류가 있습니다. 다른 클래스에 클래스의 민간 자원에 대한 액세스 권한을 부여하는

+0

그건 당황 스럽네요 : -O 감사합니다 .-)) –

-1

일반적인 방법은 공공 접근 방법 (게터, 세터)를 추가하는 것입니다.