尝试使用带参数的构造函数启动一个类

时间:2011-02-20 17:33:38

标签: c++ class

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

的行下方的任何其他参考
  

错误:表达式必须具有类类型

我已从我发布的内容中移除了其他周围的代码,我认为这不会导致错误。

2 个答案:

答案 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('@') {}
};