2015-10-02 159 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

你可能不需要指針。只要讓它成爲玩家;'。 –

+0

向構造函數移動「new」。 'Map(){player = new Player;}'。類定義只能有聲明和函數。 – knightrider

回答

0
Player *player; 
player = new Player; 

是不對的。你不能在類定義中間有像上面第二行這樣的語句。

如果你有一個C++ 11兼容的編譯器,你可以使用:

Player *player = new Player; 

理想情況下,你應該在Map構造函數初始化player。這將允許您在「Map.h」中避免使用「Player.h」。

此外,你應該添加

#include <vector> 
#include <string> 

,因爲你正在使用

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

「可以使用」,也許是的,但「應該使用」?嗯... –