簡體   English   中英

嘗試使用帶有參數的構造函數來初始化類

[英]trying to initiate a class with a constructor that takes an argument

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下方的其他任何參考

錯誤:表達式必須具有類類型

我從我發布的內容中刪除了其他周圍的代碼,這些代碼我認為不會導致錯誤。

C ++ 03中的成員變量只能在函數內部初始化(例如,從構造函數中初始化):

class board {
  private:
    token m_cPlayer;
  public:
    board() : m_cPlayer('@') {}
};

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM