Visual C ++: ошибка компилятора C4430 - PullRequest
2 голосов
/ 27 мая 2010

код 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

Что я делаю не так?

Ответы [ 5 ]

8 голосов
/ 27 мая 2010

Вам нужно сделать две вещи:

  • #include <string>
  • Измените тип на const static std::string QUIT_GAME (добавив std::)
6 голосов
/ 27 мая 2010

Вот что вам нужно, чтобы исправить ваши проблемы:

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";

4 голосов
/ 27 мая 2010
#include <string>
...
const static std::string QUIT_GAME;
2 голосов
/ 27 мая 2010

Отсутствует #include<string>

и это std::string

0 голосов
/ 27 мая 2010

попробуйте добавить вверху:

#include <string>
using std::string;
...