Connecting Tech Pros Worldwide Help | Site Map

compiling with VC++

 
LinkBack Thread Tools Search this Thread
  #1  
Old July 22nd, 2005, 05:59 PM
T-Money
Guest
 
Posts: n/a
Default compiling with VC++

I am trying to build an executable out of source code that supposedly
compiles and is complete but i keep getting errors like the following:

error C2664: cannot convert parameter 2 from
'std::vector<_Ty>::iterator' to 'void *'
with
[
_Ty=pseudoplot
]


Looks to me like something is wrong with the code, but there shouldn't
be. Does anyone know if there is a way to fix this in the compiler
setting/environment.

Thanks,
T

  #2  
Old July 22nd, 2005, 05:59 PM
Victor Bazarov
Guest
 
Posts: n/a
Default Re: compiling with VC++

T-Money wrote:[color=blue]
> I am trying to build an executable out of source code that supposedly
> compiles and is complete but i keep getting errors like the following:
>
> error C2664: cannot convert parameter 2 from
> 'std::vector<_Ty>::iterator' to 'void *'
> with
> [
> _Ty=pseudoplot
> ]
>
>
> Looks to me like something is wrong with the code, but there shouldn't
> be. Does anyone know if there is a way to fix this in the compiler
> setting/environment.[/color]

Not in this newsgroup. Try microsoft.public.vc.ide_general or any
other suitable microsoft.public.vc.* newsgroup.

If it's actually a problem with the code, we could try helping you,
but you need to follow the recommendations in the FAQ 5.8.

Victor
  #3  
Old July 22nd, 2005, 05:59 PM
Ali Cehreli
Guest
 
Posts: n/a
Default Re: compiling with VC++

On Tue, 17 Aug 2004 12:01:22 -0700, T-Money wrote:
[color=blue]
> I am trying to build an executable out of source code that supposedly
> compiles and is complete but i keep getting errors like the following:
>
> error C2664: cannot convert parameter 2 from
> 'std::vector<_Ty>::iterator' to 'void *'
> with
> [
> _Ty=pseudoplot
> ]
>
>
> Looks to me like something is wrong with the code, but there shouldn't
> be.[/color]

That code must be written under the assumption that vector::iterator is a
typedef of T* (or convertible to T*). The implementation you are using
probably defines vector::iterator as a class.

For example this works with g++ 2.95:

#include <vector>
#include <iostream>

using namespace std;

void foo(int * i)
{
cout << *i << '\n';
}

int main()
{
vector<int> v;
v.push_back(42);
foo(v.begin());
}
[color=blue]
> Does anyone know if there is a way to fix this in the compiler
> setting/environment.[/color]

You can rename functions like foo and call them through new functions:

// Renamed
void foo_impl(int * i)
{
cout << *i << '\n';
}

// Uses the address of the object
void foo(vector<int>::iterator iter)
{
return foo_impl(&(*iter));
}

Ali
 

Bookmarks

Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On

Popular Articles

What is Bytes?

We are a network of experts and professionals in IT and software development that help one another with answers to tough questions and share insights. Get the best answers to your questions from over 220,662 network members.