C++ 尝试使用接受参数的构造函数初始化类

C++ 尝试使用接受参数的构造函数初始化类,c++,class,C++,Class,我尝试过使用和不使用初始化列表。从我到目前为止所了解的情况来看,编译器似乎认为我正试图用返回类型标记声明一个函数。我还尝试使用令牌以外的名称来查看是否存在冲突 另外,我在这一行中得到了错误: class token { private: char m_chIcon; //actual ascii char that shows up for this token location m_cPlayerLocation; // every token

我尝试过使用和不使用初始化列表。从我到目前为止所了解的情况来看,编译器似乎认为我正试图用返回类型标记声明一个函数。我还尝试使用令牌以外的名称来查看是否存在冲突

另外,我在这一行中得到了错误:

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('@');
};
然后是
m_cPlayer

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


我已经从我发布的内容中删除了其他我认为不会导致错误的周边代码。

C++03中的成员变量只能在函数内部初始化(例如,从构造函数中初始化):


C++03中的成员变量只能在函数内部初始化(例如,从构造函数):

1) 您正在尝试创建静态字段。那你应该写

class board {
  private:
    token m_cPlayer;
  public:
    board() : m_cPlayer('@') {}
};
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('@') {}
};
class board
{
private:
    static token m_cPlayer;
};

// Then in **ONE** source file add.
token board::m_cPlayer('@');
1) 您正在尝试创建静态字段。那你应该写

class board {
  private:
    token m_cPlayer;
  public:
    board() : m_cPlayer('@') {}
};
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('@') {}
};
class board
{
private:
    static token m_cPlayer;
};

// Then in **ONE** source file add.
token board::m_cPlayer('@');

第二个是严重的坏主意!初始化列表中的静态成员-1.第二个是非常糟糕的主意!初始化列表中的静态成员-1.如果答案解决了您的问题,我建议您接受;-)如果答案解决了你的问题,我建议接受它;-)