我正在制作一个简单的彩票计划 - 我正在努力实施。我有一个名为'Ticket Line'的课程,这个班级只有6个数字,玩家正在玩彩票。
我想做的是,随机生成6个(已经为此获取函数),然后将其作为值存储在另一个类中。为此,我使用以下代码:
class Draw
{
private:
int drawID;
TicketLine* DrawnNumbers;
bool drawn;
}
当Draw完成时,我想生成随机数(来自TicketLine类),然后Draw可以将这些数字存储到其Draw文件中。
我如何能够访问DrawnNumbers类的功能 - 并存储getTicketNumbers.getTicketLine()
函数的结果。
int* getTicketNumbers(void) { return DrawnNumbers->getTicketLine();};
程序崩溃了以下代码:
//int *ptr[6] = getTicketNumbers();
int *ptr[6] = getTicketNumbers();
for (int x = 0; x < 6; x++){
cout << ptr[x];
}
TicketLine类:
private:
int select[6]; //Array of Ticket Numbers.
int* getTicketLine(void) { return select; };
我愿意为解决方案提供几种虚拟啤酒。我还没有找到一个好的在线酒吧 - 如果你知道一个,那么请让我知道:-)
谢谢,
答案 0 :(得分:2)
不知道了,这一行:
int *ptr[6] = getTicketNumbers();
非常怀疑。
为什么呢?好吧,我们还没有看到getTicketNumbers
的实现,所以我们不知道它是否实际为6分配内存并返回这样的数组。
此外,您在此处打印指针的值:
for (int x = 0; x < 6; x++){
cout << ptr[x];
}
如果您打算实际打印int
值,那么您可以这样说:
for (int x = 0; x < 6; x++){
cout << *(ptr[x]);
}
我的猜测是你要么:
ptr[x]
所示)有了更多信息,您似乎可以这样说:
int *ptr = getTicketNumbers();
而不是:
int *ptr[6] = getTicketNumbers();
您可能应该进行一些健全性检查,以确保在调用该函数之前实际填充select
(可能会给它一个默认值{0,0,0,0,0,0}在构造函数中)
答案 1 :(得分:0)
DrawnNumbers似乎没有指向任何东西。这是一个指针,但对于什么?
另外,请注意以这种方式返回数组。如果数组所在的对象或堆栈框架消失了,你就会被指向坏事。