我正在制作这个游戏,我正在让每个州都成为一个单身人士.我在使用SandboxState的GetInstance函数时遇到了很多错误.
以下是错误:
错误1错误C2143:语法错误:缺少';' 在'*'c之前:\ users\username\desktop\peggleclone\maze\maze\sandboxstate.cpp 5
错误2错误C2248:'SandboxState :: SandboxState':无法访问在类'SandboxState'中声明的私有成员c:\ users\username\desktop\peggleclone\maze\maze\sandboxstate.cpp 5
错误3错误C2248:'SandboxState :: ~SandboxState':无法访问类'SandboxState'中声明的私有成员c:\ users\username\desktop\peggleclone\maze\maze\sandboxstate.cpp 5
错误4错误C4430:缺少类型说明符 - 假定为int.注意:C++不支持default-int c:\ users\username\desktop\peggleclone\maze\maze\sandboxstate.cpp 6
错误5错误C2556:'int*SandboxState :: GetInstance(void)':重载函数的区别仅在于'SandboxState*SandboxState :: GetInstance(void)'的返回类型c:\ users\username\desktop\peggleclone\maze\maze\sandboxstate.cpp 6
错误6错误C2371:'SandboxState :: GetInstance':重新定义; 不同的基本类型c:\ users\username\desktop\peggleclone\maze\maze\sandboxstate.cpp 6
似乎程序无法识别GetInstance作为SandboxState*的返回值.它一直将它标记为int.我不确定为什么它会尝试在错误2和3中调用构造函数/析构函数.
这是SandboxState.cpp,SandboxState.h和BaseGameState.h
SandboxState.cpp
#include "stdafx.h"
#include "SandboxState.h"
SandboxState* SandboxState::GetInstance(void)
{
static SandboxState s_Instance;
return &s_Instance;
}
void SandboxState::Enter()
{
}
void SandboxState::Exit()
{
}
bool SandboxState::Update(float elapsedTime)
{
}
void SandboxState::Render(sf::RenderWindow* window)
{
}
Run Code Online (Sandbox Code Playgroud)
SandboxState.h
#pragma once
#include "BaseGameState.h"
class SandboxState :
public BaseGameState
{
public:
/**********************************************************/
// Singleton Accessor
static SandboxState* GetInstance( void );
/**********************************************************/
// IGameState Interface:
virtual void Enter(void) override; // load resources
virtual void Exit(void) override; // unload resources
virtual bool Update(float elapsedTime) override; // handle input & update entites
virtual void Render(sf::RenderWindow* window) override; // render entities / menu
private:
/**********************************************************/
// SINGLETON!
SandboxState(void) = default;
virtual ~SandboxState(void) = default;
SandboxState(const SandboxState&) = delete;
SandboxState& operator= (const SandboxState&) = delete;
Run Code Online (Sandbox Code Playgroud)
}
BaseGameState.h
#pragma once
class BaseGameState
{
protected:
/**********************************************************/
// Virtual Destructor
BaseGameState(void) = default;
~BaseGameState(void) = default;
public:
/**********************************************************/
// IGameState Interface:
virtual void Enter( void ) = 0; // load resources
virtual void Exit ( void ) = 0; // unload resources
virtual bool Update( float elapsedTime ) = 0; // handle input & update entites
virtual void Render( sf::RenderWindow* window ) = 0; // render entities / menu
};
Run Code Online (Sandbox Code Playgroud)
您在SandboxState类声明结束时缺少分号.这应该是您所看到的错误的原因.
作为旁注,在你的BaseGameState课堂上,有评论说// Virtual Destructor; 但是,它紧挨着构造函数,构造函数和析构函数都没有标记为virtual.
| 归档时间: |
|
| 查看次数: |
335 次 |
| 最近记录: |