我有GameSettings类。
GameSettings.hpp
class GameSettings
{
public:
GameSettings();
GameSettings loadSettings();
void saveSettings(GameSettings const & GS);
sf::VideoMode getVideoMode() const {return VMode;}
bool isFullscreen() const {return fullscreen;}
private:
sf::VideoMode VMode;
bool fullscreen;
};
游戏类中包含一个GameSettings(游戏类为Monostate):
Game.hpp
class Game
{
public:
Game() {};
static void init();
static void run();
static void clean();
private:
static sf::Window window;
static GameSettings currentGS;
};
这是init函数的实现(仅Game类中已实现的函数):
Game.cpp
void Game::init()
{
currentGS.loadSettings();
sf::Uint32 style = currentGS.isFullscreen() ? sf::Style::Fullscreen : sf::Style::None | sf::Style::Close;
window.create(currentGS.getVideoMode(), "Name", style);
}
我收到这些错误:
Game.hpp:
(两次)错误C2146:语法错误:缺少';'在标识符“ currentGS”之前-第15行
(两次)错误C4430:缺少类型说明符-假定为int。注意:C ++不支持default-int-第15行
第15行:
static GameSettings currentGS;
Game.cpp
错误C2065:“ currentGS”:未声明的标识符-第7、8、9行
错误C2228:“。loadSettings”的左侧必须具有class / struct / union-第7、8、9行
这些只是init函数的行^
最佳答案
您的代码示例不完整。您是否包括要使用的类的标题?当您看到类似的错误时:
error C2065: 'currentGS' : undeclared identifier
要么
error C2228: left of '.loadSettings' must have class/struct/union
这意味着这些变量或类型(
identifier
)目前尚不知道-常见的原因是您不包括声明标识符的头文件。确保实际上包含了用于声明变量和类型的头文件。