[英]Search Map & Print Vector
我有一个STL映射,该映射将密钥映射到可交付成果的向量。 我想在地图上搜索某个键并打印出所有可交付成果。 我正在尝试遍历矢量并在每个项目上调用print。
typedef std::vector<Deliverables> MyDeliverables;
typedef std::map<int, MyDeliverables> MyMap;
MyMap map1;
template < class T >
void printVector( const vector <T> &v)
{
for (auto p = v.begin(); p != v.end(); ++p)
*p->print();
}
int main()
{
Deliverables del("Name", 12, 12, 2018);
map1.insert(MyMap::value_type(1, MyDeliverables()));
auto search = map1.find(1);
if (search != map1.end()) {
std::cout << "Found Student ID: " << search->first << '\n';
printVector(search->second);
}
else {
std::cout << "Not found\n";
}
}
错误C2662'无效的可交付成果:: print(无效)':无法将'this'指针从'const可交付成果'转换为'可交付成果&'
行:* p-> print();
如何正确打印可交付成果?
问题出在您未显示的代码上:
Deliverables::print()
它不是const
,所以您不能使用它。 将打印功能声明为const,然后可以使用const Deliverables&
:
Deliverables::print() const
然后更改您的循环以避免对要取消引用的内容和次数进行混淆:
for(const auto& p: v)
p.print();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.