例如,我有一个名为DeckOfCards的类和数组char * suit [4]。
class DeckOfCards
{
public:
// some stuff
private:
char *suit[ 4 ];
};
我可以用这种方式初始化这个数组吗? char *suit[ 4 ] = { "Hearts", "Diamonds", "Clubs", "Spades" }
我想可以使用构造函数完成,但我不知道究竟是怎么做的。
答案 0 :(得分: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;
}
答案 1 :(得分:5)
试试这个:
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
。