如何初始化作为类成员的数组?

Ale*_*lex 3 c++ arrays class

例如,我有一个名为DeckOfCards的类和数组char*suit [4].

class DeckOfCards
{
public:
    // some stuff

private:
    char *suit[ 4 ];
};
Run Code Online (Sandbox Code Playgroud)

我可以用这种方式初始化这个数组?char *suit[ 4 ] = { "Hearts", "Diamonds", "Clubs", "Spades" }我想它可以使用构造函数完成,但我不知道如何完成它.

ral*_*nja 5

您可以在类中将其创建为静态变量,如下所示:

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;
}
Run Code Online (Sandbox Code Playgroud)


Ben*_*ley 5

试试这个:

DeckOfCards::DeckOfCards()
    :suit{ "Hearts", "Diamonds", "Clubs", "Spades" }
{}
Run Code Online (Sandbox Code Playgroud)

如果这不起作用,那么您的编译器还不支持C++的这个功能.所以你需要以旧时尚的方式做到这一点:

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

如果你打算使用这样的char指针,你应该将它们设为const,即:

const char *suit[ 4 ];
Run Code Online (Sandbox Code Playgroud)

原因是,无论如何都无法修改字符串,字符串文字驻留在只读内存中.通过声明const,至少编译器会在您尝试修改它时告诉您问题.最好避免所有这些,只是使用std::string.