red floyd
10/6/2008 10:23:00 PM
On Oct 6, 1:56 pm, Griff Johns <n...@spam.com> wrote:
> Hi, if I have the following code:
> class MyObject
> {
> public:
> MyObject() {};
> ~MyObject() {};
Delete the semicolons after constructor/destructor.
>
> int x;
>
> }
>
> class MyObjectList : public std::vector<MyObject> {};
>
> void Foo(MyObject* obj)
> {
> // Do something with obj->x
>
> }
>
> If I loop through it like this:
>
> MyObjectList list;
> // stuff list with objects
>
> MyObjectList::iterator it;
> for (it = list.begin(); it != list.end(); ++it) {
> // I used to be able to do this:
> MyObject* p_obj = it;
> Foo(p_obj);
>
> // Or this
> Foo(it);
>
> }
>
> But now the error I get is 'cannot convert parameter 1 from
> 'std::vector<_Ty>::iterator' to 'MyObject *'
>
> This is after migrating a project from vc6.0 to vc7.1, but I think that
> the issue lies with the language standards(?). So why does this happen
> now, and how do I resolve it?
use Foo(&*it);