class token
{
private:
char m_chIcon; //actual ascii char that shows up for this token
location m_cPlayerLocation; // every token has a location
token() {}
public:
token(char icon) : m_chIcon(icon) {}
};
class board
{
private:
token m_cPlayer('@');
};
我尝试过使用和不使用初始化列表。从我到目前为止看来,似乎编译器认为我试图用返回类型标记声明一个函数。我还尝试使用令牌以外的名称来查看是否存在冲突。
我也在这一行收到错误:
token m_cPlayer('@');
Error: expected type specifier
然后在m_cPlayer
错误:表达式必须具有类类型
我已从我发布的内容中移除了其他周围的代码,我认为这不会导致错误。
答案 0 :(得分:3)
C ++ 03中的成员变量只能在函数内部初始化(例如从构造函数中):
class board {
private:
token m_cPlayer;
public:
board() : m_cPlayer('@') {}
};
答案 1 :(得分:2)
1)您正在尝试创建静态字段。那你应该写
class board
{
private:
static token m_cPlayer;
};
// Then in **ONE** source file add.
token board::m_cPlayer('@');
2)您正在尝试创建默认值。那你应该写
class board
{
private:
token m_cPlayer;
public:
board() : m_cPlayer('@') {}
};