c++ - 从另一个类 C++ 获取数组

标签 c++ oop

<分区>

我正在制作一个简单的彩票程序 - 并且正在努力实现。我有一个名为“Ticket Line”的类(class),该类(class)仅包含 6 个玩家正在为其玩彩票的号码。

我想做的是随机生成 6 个(已经有这个函数),然后将其作为值存储在另一个类中。为此,我使用了以下代码:

  class Draw
{
private:
    int drawID; 
    TicketLine* DrawnNumbers;
    bool drawn; 
}

当抽奖完成后,我想生成随机数(来自 TicketLine 类),然后抽奖能够将这些数字存储到抽奖文件中。

我如何才能访问 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; }; 

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

谢谢,

最佳答案

不知道更多,这一行:

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} 在构造函数中)

关于c++ - 从另一个类 C++ 获取数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20435051/

相关文章:

c++ - std::is_trivially_copyable 太强了,我应该用什么来代替?

c++ - 使用虚函数访问私有(private)函数

c++ - CUDA 内核未被所有 block 调用

c++ - 构造函数的 Constexpr 条件

java - JOptionPane 到 JCombobox 或如果可能的话将它们组合起来。?

c++ - 在标准容器上执行一系列操作时最小化峰值内存使用

c# - 如何使用带有 IL2CPP 的纯 C++ 代码将 Unity 编译到 Windows 应用程序中?

java - 使用监听器时类内嵌套接口(interface)的优点

javascript - 如何停止间隔?

javascript - "this"在私有(private)函数内部调用时引用窗口