I have the following snippet:
char* filename;
unsigned long long int bytesToTransfer;
int fd, pagesize;
char *data;
fd = open(filename, O_RDONLY);
if (fd==NULL){
fputs ("File error",stderr);
exit (1);
}
cout << "File Open: " << filename << endl;
pagesize = getpagesize();
data = mmap((caddr_t)0, bytesToTransfer, PROT_READ, MAP_SHARED, fd, 0);
if (*data == -1) {
fputs ("Memory error",stderr);
exit (2);
}
cout << "Data to Send: " << data << endl;
But when I compile, I receive:
error: invalid conversion from ‘void*’ to ‘char*’ [-fpermissive] data = mmap((caddr_t)0, bytesToTransfer, PROT_READ, MAP_SHARED, fd, 0);
Could someone give me a hint at what's wrong?
C++ does not perform implicit casts from void*
, you must make this explicit
data = static_cast<char*>(mmap((caddr_t)0, bytesToTransfer, PROT_READ, MAP_SHARED, fd, 0));
mmap returns a void*. data is a char*. You'll need to cast it:
data = static_cast<char*>( mmap((caddr_t)0, bytesToTransfer, PROT_READ, MAP_SHARED, fd, 0) );
This will try to resolve the type issue at compile time.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With