Map数据结构的使用问题

我在使用Map这个3.0的数据结构
遇到了问题
请问Map中的第一个参数可以是任意类型吗????
我自己定义了一个结构体,因为我的key需要两个

struct node_2D_pos //the two-dimensional position of the node
{
int row; // 2D in row
int col; // 2D in col
};
typedef struct node_2D_pos NODE2DPOS;

cocos2d::Map<NODE2DPOS, cocos2d::Sprite*> sushisMap;

之后就出现了很多error 很多cocos2d的东西不能用了 CREATE_FUNC(GameScreen); cannot initial

我是在头文件中这么做的
#ifndef GAME_SCENE_H
#define GAME_SCENE_H

#include “cocos2d.h”

struct node_2D_pos //the two-dimensional position of the node
{
int row; // 2D in row
int col; // 2D in col
};
typedef struct node_2D_pos NODE2DPOS;

class GameScreen : public cocos2d::Layer
{
public:
// there’s no ‘id’ in cpp, so we recommend returning the class instance pointer
static cocos2d::Scene* createScene();

// Here’s a difference. Method ‘init’ in cocos2d-x returns bool, instead of returning ‘id’ in cocos2d-iphone
virtual bool init();

// implement the “static create()” method manually

CREATE_FUNC(GameScreen);
const int TOTAL_SUSHI = 6;
void initialSushi2DArray(int no_of_rows, int no_of_cols);

cocos2d::Map<NODE2DPOS, cocos2d::Sprite*> sushisMap;