use*_*514 1 c++ arrays constructor initialization
为什么不能在我的构造函数中初始化我的字符串数组?我收到以下错误:内部编译器错误:分段错误|
在构造函数中的这两行:suit = {"Clubs","Diamonds","Hearts","Spades"}; denominations = {"Ace","2","3","4","5","6","7","8","9","10","Jack","Queen" ,"王"};
class Card
{
public:
Card(int n);
Card(string d, string s);
int getNumber();
string getDenomination();
string getSuit();
void setNumber(int n);
void setDenomination(string d);
void setSuit(string s);
void printMe();
void compareMe(Card c);
private:
int number;
string denomiation;
string suit;
string suits [4];
string denominations [13];
};
Card::Card(int n)
{
suits = {"Clubs", "Diamonds", "Hearts", "Spades"};
denominations = {"Ace","2","3","4","5","6","7","8","9","10","Jack","Queen","King"};
int denIndex, suitIndex;
denIndex = 51 % 13;
suitIndex = 51 / 13;
number = n;
denomiation = denominations[denIndex];
suit = suits[suitIndex];
}
Run Code Online (Sandbox Code Playgroud)
从您发布的代码中,我认为那些menbers suits
并且denominations
应该是静态数据成员,也就是说它们将始终为每个Card
实例提供相同的数据.
所以我建议你将它们设置为静态并在cpp文件的文件范围内初始化它们(在类声明之外):
宣言:
class Card
{
public:
Card(int n);
Card(string d, string s);
int getNumber();
string getDenomination();
string getSuit();
void setNumber(int n);
void setDenomination(string d);
void setSuit(string s);
void printMe();
void compareMe(Card c);
private:
int number;
string denomiation;
string suit;
static const string suits [4]; // static const
static const string denominations [13]; // static const
};
Run Code Online (Sandbox Code Playgroud)
定义:
const string Card::suits[4] = {"Clubs", "Diamonds", "Hearts", "Spades"};
const string Card::denominations[13] = {"Ace","2","3","4","5","6","7","8","9","10","Jack","Queen","King"};
Run Code Online (Sandbox Code Playgroud)
编辑:
正如Robert S. Barnes所说,制作它们static const
会更好.
希望有所帮助.