簡體   English   中英

如何初始化作為類成員的數組?

[英]How to initialize an array that is a member of a class?

例如,我有一個名為DeckOfCards的類和數組char * suit [4]。

class DeckOfCards
{
public:
    // some stuff

private:
    char *suit[ 4 ];
};

我可以用這種方式初始化這個數組? char *suit[ 4 ] = { "Hearts", "Diamonds", "Clubs", "Spades" }我想它可以使用構造函數完成,但我不知道究竟是怎么做到的。

您可以在類中將其創建為靜態變量,如下所示:

class DeckOfCards
{
public:
  DeckOfCards() {
    printf("%s\n", suit[0]);
  }

private:
  static const char *suit[];
};

const char *DeckOfCards::suit[] = { "Hearts", "Diamonds", "Clubs", "Spades" };

int main(void)
{
  DeckOfCards deck;
  return 0;
}

嘗試這個:

DeckOfCards::DeckOfCards()
    :suit{ "Hearts", "Diamonds", "Clubs", "Spades" }
{}

如果這不起作用,那么您的編譯器還不支持C ++的這個功能。 所以你需要以舊時尚的方式做到這一點:

DeckOfCards::DeckOfCards()    
{
    suit[0] = "Hearts";
    suit[1] = "Diamonds";
    suit[2] = "Clubs";
    suit[3] = "Spades";
}

如果你打算使用這樣的char指針,你應該將它們設為const,即:

const char *suit[ 4 ];

原因是,無論如何都無法修改字符串,字符串文字駐留在只讀內存中。 通過聲明const,至少編譯器會在您嘗試修改它時告訴您問題。 最好避免所有這些,只使用std::string

暫無
暫無

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

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