↑ ↓ ← → Michael Comperchio <mcmprch adelphia.net>
writes:
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();
}
}
↑ ↓ ← → Jan Knepper <jan smartsoft.cc>
writes:
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();
}
}
↑ ↓ ← → Michael Comperchio <mcmprch adelphia.net>
writes:
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 *)]
↑ ↓
← → Al Bowers <abowers combase.com>
writes:
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");
}