2014-09-25 47 views
-3

我有一个类和该类的元素向量。我需要在我的矢量的特定位置插入新对象,但我甚至无法访问我想要的位置。我试图打印我的迭代器,但它不工作......我测试了一个int整数的迭代器,它工作正常,我不能使它与我自己的类一起工作......我错过了什么?访问vector的迭代器<myClass>

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 
} 

我试过*它 - > toString()和它说,我的课没有toString方法

+0

您需要为您创造类的toString它不存在默认情况下(不像Java或C#)相同的运营商<<。如果你从你的编译器粘贴了确切的错误信息,这将有所帮助。 – Borgleader 2014-09-25 21:14:29

+0

你可以'cout'一个'ToDo'对象吗?另外,'resize'可能会使迭代器失效。 – juanchopanza 2014-09-25 21:14:44

+0

什么是“待办事项”? – 101010 2014-09-25 21:16:52

回答

1

你的代码是不工作的原因是,你的迭代器指向(A什么ToDo对象)没有定义输出操作符。

如果要使用operator<<()打印出ToDo对象,则需要为您的类定义一个对象。

这里是一个粗略的例子给你的想法:

#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'; 
} 
相关问题