Type-cast problem

From: Jon Barrett (mixtli@SINFO.NET)
Date: 02/15/98


I recently changed all of my source files to .cpp so I could begin
implementing in C++.  Many error appeared which were all mainly
variables that were C++ keywords like new, this.  One error has left me
stumped. I would appreciate any suggestions.

here are the errors:

C:\GodsForge\src\mail.cpp(425) : error C2440: 'type cast' : cannot
convert from 'void *' to 'struct char_data'
                   No constructor could take the source type, or
constructor overload resolution was ambiguous
C:\GodsForge\src\mail.cpp(428) : error C2664: 'postmaster_check_mail' :
cannot convert parameter 2 from 'void *' to 'struct char_data *'
C:\GodsForge\src\mail.cpp(431) : error C2664: 'postmaster_receive_mail'
: cannot convert parameter 2 from 'void *' to 'struct char_data *'

here is the code: (its all stock bpl9 code, but I will include it anyway

#define SPECIAL(name)    int (name)(struct char_data *ch, void *me, int
cmd, char *argument)

SPECIAL(postmaster)
{
  if (!ch->desc || IS_NPC(ch))
    return 0;                   /* so mobs don't get caught here */

  if (!(CMD_IS("mail") || CMD_IS("check") || CMD_IS("receive")))
    return 0;

  if (no_mail) {
    send_to_char("Sorry, the mail system is having technical
difficulties.\r\n", ch);
    return 0;
  }

  if (CMD_IS("mail")) {
    postmaster_send_mail(ch, (struct char_data)me, cmd, argument);
    return 1;
  } else if (CMD_IS("check")) {
    postmaster_check_mail(ch, me, cmd, argument);
    return 1;
  } else if (CMD_IS("receive")) {
    postmaster_receive_mail(ch, me, cmd, argument);
    return 1;
  } else
    return 0;
}

void postmaster_send_mail(struct char_data * ch, struct char_data
*mailman, int cmd, char *arg)

void postmaster_check_mail(struct char_data * ch, struct char_data
*mailman, int cmd, char *arg)

void postmaster_receive_mail(struct char_data * ch, struct char_data
*mailman, int cmd, char *arg)

I changed nothing in the code, just the file type.  I tried type-casting
to void pointer to char_data, but it said something bout the
constructor.  Its a struct does it have a constructor, maybe a default
constructor?  Why wont it convert from void to struct char_data?  Well
I'm stumped, I hope someone can help me oput a bit.

@****************************************************************************@
The criminal is stupid and ignorant.  Stupidity and ingnorance can
therefor
be called criminal.
       - L. Ron Hubbard
@****************************************************************************@


     +------------------------------------------------------------+
     | Ensure that you have read the CircleMUD Mailing List FAQ:  |
     | http://democracy.queensu.ca/~fletcher/Circle/list-faq.html |
     +------------------------------------------------------------+



This archive was generated by hypermail 2b30 : 12/15/00 PST