2015-10-02 3 views
-2

Здравствуйте, я довольно новичок в кодировании и начал свой первый крупный проект, чтобы быстрее учиться.
Когда я пытаюсь также выделить память, ошибка «это объявление не имеет класса хранения или спецификатора типа» в подсказке инструмента, а затем оно не будет компилироваться.C++: Ошибка: это объявление не имеет типа хранения или спецификатора типа

#ifndef MAP_H 
#define MAP_H 
#include "Headers.h" 
#include "Player.h" 

class Player; 
class Map 
{ 
public: 
    Map(); 
    Player *player; 
    player = new Player; 

    std::vector <std::string> levelData; 

    void Draw(); 
    void Create(); 
    void Open(); 
    void Save(); 
}; 

#endif 
+2

Если вы новичок в кодировании, вероятно, вы должны провести время с текстом книги, редактор и компилятор, а чем при переполнении стека. –

+0

Вам, вероятно, не нужен указатель. Просто сделайте это «Player player;». –

+0

переместить «новый» в конструктор. 'Map() {player = new Player;}'. Определение класса может содержать только декларации и функции. – knightrider

ответ

0
Player *player; 
player = new Player; 

не прав. Вы не можете иметь утверждение, подобное второй строке выше в середине определения класса.

Если у вас есть совместимый компилятор C++ 11, вы можете использовать:

Player *player = new Player; 

В идеале, вы должны инициализировать player в конструкторе Map. Это позволит вам избежать #include «Player.h» в «Map.h».

Кроме того, вы должны добавить

#include <vector> 
#include <string> 

, так как вы используете

std::vector <std::string> levelData; 
+1

«Может использовать», возможно, да, но «должен использовать»? Хммм ... –

Смежные вопросы