Visual C ++:编译器错误C4430

时间:2010-05-26 20:49:44

标签: c++ visual-c++ syntax-error

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

我做错了什么?

6 个答案:

答案 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)

在将两者修复为相同的作品之后。