【发布时间】:2016-11-25 16:51:39
【问题描述】:
我有这个作为 TASK 类的成员。
list<Stimulation*> listOfStimulations;
还有我的类定义的其余部分;
class Task
{
public:
Task();
Task(const Task& obj);
Task(const Task&& obj);
Task(string, list<Stimulation*>);
Task& operator+=( Stimulation* obj);
Stimulation* Task::operator[](int i) const;
};
#endif
我想成为啤酒来访问列表中的每个刺激。
我知道我应该使用矢量,但使用列表是必需的。
我将如何重载 []?
我试过了
Stimulation* Task::operator[](int i) const
{
list<Stimulation*>::const_iterator iter;
iter = listOfStimulations.begin();
advance(iter, i);
return *iter;
}
我的主要问题是这段代码不允许我访问列表中的元素。
例如,listOfStimulations[i] 不起作用,并且不允许我访问 Stimulations 类中的函数显示。
【问题讨论】:
-
只使用
begin()和end()? -
您可以使用迭代器遍历列表,直到到达第 n 个节点。
-
如果是标准的
list,则不能;operator[]必须是非静态成员函数。std::list的要求表明这个练习想教你如何在不依赖索引的情况下进行编程。 -
@molbdnilo 抱歉,练习确实指定了重载 [] 运算符。
-
@felix 我试过paste.ee/p/j64wi 我不完全确定它是否符合我的要求。我希望能够做 listofStimulation[i]->display() 来调用对象的显示函数。
标签: c++ list pointers visual-c++