gpt4 book ai didi

c++ - 如何将重载的 ostream 运算符与指向对象的指针数组一起使用?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:06:05 39 4
gpt4 key购买 nike

在下面的代码中,如何使用重载的“<<”运算符来打印所需信息,而不是使用新函数“void print()”?

或者准确的说,这里的错误在哪里?

在其中一个继承类中重载 << 运算符:

friend ostream &operator<<(ostream &os, DigitSecret &s){
for(int i=0;i<s.n;i++)
os<<s.digits[i];

return os<<" Simple entropy: "<<s.simpleEntropy()<<" Total: "<<s.total();
}


void printAll (Secret ** secrets, int n) {
for(int i=0;i<n;i++){
cout<<secret[i] //This is printing an address, however that is not what i want.
secrets[i]->print(); //I want that to work like this.

}
}

整个代码:https://pastebin.com/MDCsqUxJ我希望第 134 和 143 行能够正常工作。

编辑:

最佳答案

secret[i]Secret* 类型,您应该先取消引用,然后您的重载才会被选取:

 cout << *secret[i];

旁注:使用 std::vector 而不是原始动态分配。

关于c++ - 如何将重载的 ostream 运算符与指向对象的指针数组一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50087685/

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