我有 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函数的行^
答案 0 :(得分:1)
您将const
放在错误的地方
更新
void saveSettings(GameSettings & const GS);
^^^^^
为:
void saveSettings(GameSettings const & GS);
^^^^^
答案 1 :(得分:1)
您的代码示例不完整。您是否包含要使用的类的标题?当您看到如下错误时:
error C2065: 'currentGS' : undeclared identifier
或
error C2228: left of '.loadSettings' must have class/struct/union
这意味着此时不知道那些变量或类型(identifier
) - 并且通常的原因是您没有包含声明标识符的头文件。确保您实际包含了声明变量和类型的头文件。