我有一个类和该类元素的向量。我需要在向量的特定位置插入新对象,但我甚至无法访问我想要的位置。我试图打印我的迭代器,但它不起作用...我用一个向量的int测试迭代器,它工作正常,我只是不能让它与我自己的类一起工作......我错过了什么?
ToDo individualTask;
vector<ToDo> myToDoList;
vector<ToDo>::iterator it;
myToDoList.push_back(individualTask);
cout << myToDoList.size() << endl;
myToDoList.resize(10);
for (it = myToDoList.begin(); it != myToDoList.end(); ++it) {
cout << *it << endl; // not working
}
我尝试了* it-&gt; toString()并且它说我的类没有方法toString
答案 0 :(得分:1)
你的代码不工作的原因是你的迭代器所指向的东西(一个ToDo对象)没有定义输出操作符。
如果您想使用ToDo
打印出operator<<()
对象,则需要为您的班级定义一个。
这是一个粗略的例子,可以给你一个想法:
#include <string>
#include <ctime>
#include <iostream>
// Example ToDo class
class ToDo
{
// declare friend to allow << to access your private members
friend std::ostream& operator<<(std::ostream& os, const ToDo& todo);
private:
std::time_t when; // unix time
std::string what; // task description
public:
ToDo(std::time_t when, const std::string& what): when(when), what(what) {}
// etc...
};
// This should go in a .cpp file. It defines how to print
// Your ToDo class objects
std::ostream& operator<<(std::ostream& os, const ToDo& todo)
{
// todo.when needs formatting into a human readable form
// using library functions
os << "{" << todo.when << ", " << todo.what << "}";
return os;
}
// Now you should be able to output ToDo class objects with `<<`:
int main()
{
ToDo todo(std::time(0), "Some stuff");
std::cout << todo << '\n';
}