从另一个C ++类中获取数组

时间:2013-12-06 22:55:39

标签: c++ oop

我正在制作一个简单的彩票计划 - 我正在努力实施。我有一个名为'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; }; 

我愿意为解决方案提供几种虚拟啤酒。我还没有找到一个好的在线酒吧 - 如果你知道一个,那么请让我知道:-)

谢谢,

2 个答案:

答案 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]);
}

我的猜测是你要么:

  • 超出(未)分配的数组的边界,或
  • 在某处修改实际指针值而不是它们指向的整数(正如您在print语句中缺少解除引用ptr[x]所示)

修改

有了更多信息,您似乎可以这样说:

int *ptr = getTicketNumbers();

而不是:

int *ptr[6] = getTicketNumbers();

您可能应该进行一些健全性检查,以确保在调用该函数之前实际填充select(可能会给它一个默认值{0,0,0,0,0,0}在构造函数中)

答案 1 :(得分:0)

DrawnNumbers似乎没有指向任何东西。这是一个指针,但对于什么?

另外,请注意以这种方式返回数组。如果数组所在的对象或堆栈框架消失了,你就会被指向坏事。