Thread overview | ||||||
---|---|---|---|---|---|---|
|
September 23, 2002 array of pointer to classes... | ||||
---|---|---|---|---|
| ||||
I'm confused by declarations. I'm trying to dynamically create an array of pointers to classes. so: #include <stdio.h> #include <string.h> class emails { public: emails(){}; emails(char *FName, char *LName, char *EMail, int ID){ strcpy(fname, FName); strcpy(lname, LName); strcpy(email , EMail); id = ID; }; char * GetName() const { return strcat(fname,lname);}; void SetName(char * Fname, char *Lname){ strcpy(fname, Fname); strcpy(lname, Lname); } char * GetEmail() const { return email;}; void SetEmail( char * EMail) { strcpy(email,EMail);}; private: char fname[50]; char lname[50]; char email[50]; int id; }; void main(int argc, char *argv[]) { { /* Print a prompt prior to exiting so that you can view output */ emails *local_emails[]; // I read this as: local_mails is an array of pointers to emails...however... the compiler tells me size of array is not known...ok so emails **local_emails; //it doesn't like this either...can I do something like this in C++???? local_emails = new emails[10]; printf("Press a character....\n"); getch(); } } |
September 23, 2002 Re: array of pointer to classes... | ||||
---|---|---|---|---|
| ||||
Posted in reply to Michael Comperchio | Michael Comperchio wrote: > { > /* Print a prompt prior to exiting so that you can view output */ > emails *local_emails[]; > // I read this as: local_mails is an array of pointers to > emails...however... the compiler tells me size of array is not > known...ok so > emails **local_emails; Ok, than: const int LOCAL_EMAILS = 10; local_emails = new ( emails * ) [ LOCAL_EMAILS ]; for ( int i = 0 ; i < LOCAL_EMAILS ; i++ ) *( local_emails + i ) = new emails (); > //it doesn't like this either...can I do something like this in C++???? emails *local_emails; // This should do for new emails [ 10 ]; > > local_emails = new emails[10]; > > printf("Press a character....\n"); > getch(); > } > } |
September 23, 2002 Re: array of pointer to classes... | ||||
---|---|---|---|---|
| ||||
Posted in reply to Jan Knepper | Jan Knepper wrote:
> Michael Comperchio wrote:
>
>
>> {
>> /* Print a prompt prior to exiting so that you can view output */
>> emails *local_emails[];
>>// I read this as: local_mails is an array of pointers to
>>emails...however... the compiler tells me size of array is not
>>known...ok so
>> emails **local_emails;
>
>
> Ok, than:
> const int LOCAL_EMAILS = 10;
> local_emails = new ( emails * ) [ LOCAL_EMAILS ];
>
> for ( int i = 0 ; i < LOCAL_EMAILS ; i++ )
> *( local_emails + i ) = new emails ();
>
>
>>//it doesn't like this either...can I do something like this in C++????
>
>
> emails *local_emails; // This should do for new emails [
> 10 ];
>
>
>> local_emails = new emails[10];
>>
>> printf("Press a character....\n");
>> getch();
>> }
>>}
>
>
the actual number of emails is not known until runtime (the number of rows returned from a DB call)...but that's seems to be ok as this works...
emails **local_email;
....
local_email = new (emails * [res.size() * sizeof(emails *)]);
the key was (emails *...) I was stuck in my stubborn way on using ...new emails[res.size() * sizeof(emails *)]
|
September 26, 2002 Re: array of pointer to classes... | ||||
---|---|---|---|---|
| ||||
Posted in reply to Michael Comperchio | Michael Comperchio wrote: > I'm confused by declarations. I'm trying to dynamically create an array of pointers to classes. so: ..............code snipped.............. Since you are using C code, you could use function malloc. You need to watch the char arrays. The way you are copying to them is very dangerous. Ex. #include <stdio.h> #include <string.h> #include <stdlib.h> class emails { public: emails(){}; emails(char *FName, char *LName, char *EMail, int ID){ strcpy(fname, FName); strcpy(lname, LName); strcpy(email , EMail); id = ID; }; char * GetName() { return strcat(fname,lname);}; void SetName(char * Fname, char *Lname){ strncpy(fname, Fname,48); fname[48]='\0'; strcat(fname," "); strncpy(lname, Lname,49); lname[49]='\0'; } char * GetEmail() { return email;}; void SetEmail( char * EMail) { strncpy(email,EMail,49); email[49]='\0'; }; private: char fname[100]; char lname[50]; char email[50]; int id; }; void main(int argc, char *argv[]) { emails *local_emails; if((local_emails=(emails *)malloc(10*sizeof(emails)))==NULL) exit(EXIT_FAILURE); int i; for(i = 0;i <10;i++) local_emails[i].SetName("George","Washington"); for(i = 0;i <10;i++) printf("local_emails[%i] name: %s\n", i,local_emails[i].GetName()); free(local_emails); printf("\nDa size of emails * = %u\n" "Da size of emails = %u\n\n",sizeof(emails *), sizeof(emails)); printf("Da End....\n"); } |
Copyright © 1999-2021 by the D Language Foundation