缺少类型说明符,编译器将Class*更改为int*

use*_*986 0 c++ class

我正在制作这个游戏,我正在让每个州都成为一个单身人士.我在使用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)

Dan*_*iel 7

您在SandboxState类声明结束时缺少分号.这应该是您所看到的错误的原因.

作为旁注,在你的BaseGameState课堂上,有评论说// Virtual Destructor; 但是,它紧挨着构造函数,构造函数和析构函数都没有标记为virtual.