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

标签 c++ arrays class pointers dereference

我有一个 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/

相关文章:

c++ - 没有实例的 fooC++ sizeof 类成员

C++ lambda - 如何捕获函数参数

java - 比较两个数组列表

java - 在实例化一个类的同时编写它?

python - 将可调用对象隐式绑定(bind)到实例

c++ - 质因数分解的除数

c++ - Xcode 8、Swift 和 C++

arrays - VBA:根据另一个数组对数组进行排序

javascript - 如何从javascript中的另一个数组中删除数组

php - 如何更改 PHP 中第一个回显结果的类?