【发布时间】:2013-02-27 19:38:14
【问题描述】:
我不明白在 c++ 中动态分配结构成员所需的语法。基本上,我需要使用临时数组和 strlen 将 char 数组成员填充到精确大小。这是我的结构:
struct card
{
char *rank;
char *suit;
char color;
bool dealt;
char *location;
};
这是使用结构体的函数:
bool importCard(card *deckPtr, char *deckName);
我创建了一个包含 52 张卡片的数组并为其分配了一个指针,并将它作为第一个参数传递给函数。 (deckPtr) 这是函数中的一个循环,它应该将卡片信息读入结构数据成员。
for(index=0;index<52;index++,deckPtr++)
{
fin >> *temp;
charCount=stringLength(temp);
deckPtr.*rank = new char[charCount+1];
stringCopy(*temp, deckPtr.*rank);
fin >> *temp;
charCount=stringLength(temp);
deckPtr.*suit = new char[charCount+1];
stringCopy(*temp, deckPtr.*suit);
if(deckPtr.*suit==('d')||deckPtr.*suit==('h'))
{
(*deckPtr).color='r';
}
else
{
(*deckPtr).color='b';
}
(*deckPtr).dealt=false;
deckPtr.*location = new char[11];
stringCopy(unshPtr, deckPtr.*location);
}
我收到三个编译错误:“rank”、“suit”和“location”“未在此范围内声明”。我究竟做错了什么?谢谢!
【问题讨论】:
-
stringLength 和 stringCopy 是我自己的函数。我必须编写它们(这个程序是一个类分配),但它们的功能与它们的字符串库对应物相同。
-
rank和suit是否不止一个字符?此外,您的运算符选择对于 C++ 来说并不是非常地道,这可能是问题的一部分。 -
不用
char*,直接使用std::strings。 -
另外,我不能使用箭头操作符。
-
等级和花色范围大约为 3 到 7 个字符。
标签: c++ memory dynamic struct allocation