Game.h 的代码:
#ifndef GAME_H
#define GAME_H
class Game
{
public:
const static string QUIT_GAME; // line 8
virtual void playGame() = 0;
};
#endif
错误:
game.h(8): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
game.h(8): error C2146: syntax error : missing ';' before identifier 'QUIT_GAME'
game.h(8): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
我做错了什么?
答案 0 :(得分:8)
你需要做两件事:
#include <string>
const static std::string QUIT_GAME
(添加std::
)答案 1 :(得分:6)
以下是解决问题的方法:
<强> 1。包括字符串头文件:
#include <string>
<强> 2。前缀string
及其命名空间:
const static std::string QUIT_GAME;
或插入using
声明:
#include <string>
using std::string;
第3。为变量分配空间
由于您在类中将其声明为static
,因此必须在代码中的某处定义:
const std::string Game::QUIT_GAME;
<强> 4。使用值初始化变量
由于您使用const
声明了字符串,因此需要将其初始化为一个值(或者它将保持为一个常量空字符串):
const std::string Game::QUIT_GAME = "Do you want to quit?\n";
答案 2 :(得分:4)
#include <string>
...
const static std::string QUIT_GAME;
答案 3 :(得分:2)
缺少#include<string>
并且它是std::string
答案 4 :(得分:0)
尝试在顶部添加:
#include <string>
using std::string;
答案 5 :(得分:0)
就我而言,我在 #define
上有错字,我参考 this article 来创建 dll 项目,正确的是在头文件中写入以下内容:
#ifdef MATHLIBRARY_EXPORTS
#define MATHLIBRARY_API __declspec(dllexport)
#else
#define MATHLIBRARY_API __declspec(dllimport)
#endif
但我在#else #define
中有错字丢失了一些字符和不同:
#define MATHLIBRARY_API __declspec(dllexport)
#else
#define MATHLIARY_API __declspec(dllimport)
在将两者修复为相同的作品之后。