gpt4 book ai didi

c++ - 将 'this' 作为 QList 派生类的 foreach 迭代器的第二个参数

转载 作者:行者123 更新时间:2023-11-28 00:59:06 24 4
gpt4 key购买 nike

首先我想说明一下,这是一个基于家庭作业的问题。既然如此,我想“了解”我的想法哪里出了问题,而不仅仅是给出答案 ;)

我有一个名为 RegistrationList 的类,它派生自 QList,如下所示:

class RegistrationList : public QList<Registration *>

Registration 对象有两个子类,因此列表 RegistrationList 有指向原始 Registration 类及其两个子类的对象的指针:

class GuestRegistration : public Registration

class StudentRegistration : public Registration

类 RegistrationList 必须具有如下原型(prototype)的函数:

 void displayList();

这个函数需要做的就是调用一个叫做

的函数
QString toString();

在列表中的所有对象中。

现在这就是我要执行的

 void displayList();

RegistrationList类的成员函数:

void RegistrationList::displayList()
{
QTextStream cout(stdout);
cout << "\nHere follows a list of all registrations:";
cout << "\n=========================================\n";

foreach(Registration *r, this) { r->toString(); }
}

但是编译器一点都不喜欢。我的看法是,我想遍历一个包含注册类对象集合的列表。这些对象中的每一个都有一个名为

的成员函数
toString();  

打印出漂亮的格式化信息。这 100% 有效。如果我注释掉 foreach 行代码编译没有问题。唯一能想到的就是foreach不喜欢有

this

作为它的第二个参数。

这不是我必须使用 foreach 的必要条件,但如果我找不到为什么它不起作用,它会让我无休止地烦恼,尽管它“看起来”好像应该......

最佳答案

foreach 要求第二个参数是对对象的引用。因此,您需要取消引用:

foreach(Registration *r, *this) { r->toString(); }

您可能还想编写 r->toString();到您刚刚创建的流。

关于c++ - 将 'this' 作为 QList 派生类的 foreach 迭代器的第二个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9692117/

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