问题描述
假设我们有一个名为 Student
的类,data
是列表。
std::list<Student>::iterator<Student> it;
for(it = data.begin(); it != data.end(); ++it){
std::cout<<(*it)->name;
it->print();
}
std::list<Student>::iterator<Student> it2;
for(it2 = data.begin(); it2 != data.end(); ++it2){
std::cout<<(*it2)->name;
it2->print();
}
当我们对从两个不同列表中得到的迭代器进行加法(或乘法)时,mult
代表什么。我的意思是如果我们将 *it
和 *it2
for(it = data.begin(); it != data.end(); ++it){
Student mult = (*it) * (*it2);
}
你能从概念上举一个例子吗?
解决方法
如果编译成功:
Student mult = (*it) * (*it2);
为 operator*
定义了一个 Student
重载 - 但它与迭代器没有任何关系。迭代器被取消引用 (*
),因此您有两个对 Student
相乘的引用。
最有可能找到答案的地方:
Student operator*(const Student&,const Student&) {
// the answer to your question is in here
}