gpt4 book ai didi

C++ - 取消引用作为数组元素的指针?

转载 作者:太空狗 更新时间:2023-10-29 23:08:32 26 4
gpt4 key购买 nike

我有一个 Deck 类的对象,它包含一个动态分配的指针数组,指向另一个类 PlayingCard 的对象。我正在尝试重载 << 运算符(作为 Deck 类的 friend )以迭代地输出 Deck 对象中每张卡片的详细信息。目前重载定义如下所示:

ostream& operator<< (ostream& out, const Deck& d)
{
PlayingCard** pCards = d.getPlayingCards();
for(int i = 0; i < d.getTotalCards(); ++i)
{
out << pCards[i] << endl;
// the << operator is also overloaded in the PlayingCard class to take PlayingCard objects as arguments.
// the overload in the PlayingCard class definitely works.
}

return out;
}

当尝试构造一个 Deck 对象并输出其卡片详细信息时,它会输出一个内存地址列表而不是实际数据,所以我想我需要取消引用 pCards[i]。然而,当我尝试这样做时,输出是垃圾,我最终在调试器中遇到了访问冲突。我已经尝试了以下所有组合,但都会导致编译时或运行时问题:

*pCards[i], pCards[i]*, (*pCards[i]), *(pCards[i])

这只是取消引用数组中的指针的不正确语法,还是有更深层次的东西我在这里不理解?我如何重写这段代码,以便程序输出这些 PlayingCard 对象所持有的实际数据,而不仅仅是内存地址?

最佳答案

*pCards[i](*pCards[i])*(pCards[i]) 都在取消引用对象.您的程序的另一部分出现了其他问题,可能是在 Deck 的实现中。

关于C++ - 取消引用作为数组元素的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9144401/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com