Creating and destroying objects

Please support our C++ advertiser: Intel Parallel Studio Home
Reply

Join Date: Jan 2004
Posts: 7
Reputation: fishman is an unknown quantity at this point 
Solved Threads: 0
fishman fishman is offline Offline
Newbie Poster

Creating and destroying objects

 
0
  #1
Feb 16th, 2004
Hi

After getting great help with my first post here I thought I would try again. I need to create a (dynamic) number of objects of two types, eggs and fry. I then need to be able to delete the fry and then make a new group of fry objects with all the info from the members of the egg objects (i.e. the egg objects will become the new fry objects). the number of objects will vary so I cannot just over write the old values. I have some code that actually works, but as the program exits a Windows error box appears. I am thinking some sort of memory problem but I am stumped. My code is:

#include <iostream>

#include <stdlib.h>

using namespace std;

#include "class1.hpp"

#include "class2.hpp"

int main()

{

Stage1 *eggs;

eggs = new Stage1[3];

for(int i=0;i<3;i++)

{

cout << "Egg number " << i << " Age " << eggs[i].getAge() << " Weight " << eggs[i].getWeight() << endl;

}

Stage2 *fry;

fry = new Stage2[3];

cout << endl;

for(int i=0;i<3;i++)

{

cout << "Fry number " << i << " Age " << fry[i].getAge() << " Weight " << fry[i].getWeight() << endl;

}

delete [] fry;

cout << endl;

for(int i=0;i<3;i++)

{

Stage2 *fry;

fry = new Stage2[i];

fry[i].setAge( eggs[i].getAge() );

fry[i].setWeight( eggs[i].getWeight() );

cout << "New Fry number " << i << " Age " << fry[i].getAge() << " Weight " << fry[i].getWeight() << endl;

}

cin.get();

return 0;

}

The header files are:

class1.hpp

//********************************************

class Stage1

{

public:

Stage1();

~Stage1();

int getAge() {return itsAge;}

void setAge (int Age) {itsAge = Age;}

int getWeight () {return itsWeight;}

void setWeight (int Weight) {itsWeight = Weight;}

protected:

int itsAge;

int itsWeight;

};

Stage1:tage1():

itsAge(1),

itsWeight(5)

{

}

Stage1::~Stage1()

{

}

class2.hpp

//********************************************

class Stage2

{

public:

Stage2();

~Stage2();

int getAge() {return itsAge;}

void setAge (int Age) {itsAge = Age;}

int getWeight () {return itsWeight;}

void setWeight (int Weight) {itsWeight = Weight;}

protected:

int itsAge;

int itsWeight;

};

Stage2:tage2():

itsAge(2),

itsWeight(9)

{

}

Stage2::~Stage2()

{

}





As I said, this works fine and I get the correct values, however on program exit I get an error box saying errors have been generated and the top of the log file looks like this:

Application exception occurred:

App: (pid=680)

When: 12/5/2003 @ 14:50:59.859

Exception number: c0000005 (access violation)

Please help

Fishman
PS I know this code could have been done better with derived or virtual classes but it is just to try to illustrate my problem
Reply With Quote Quick reply to this message  
Join Date: Feb 2003
Posts: 129
Reputation: Bob is an unknown quantity at this point 
Solved Threads: 1
Team Colleague
Bob Bob is offline Offline
Team Member

Re: Creating and destroying objects

 
0
  #2
Feb 18th, 2004
Hi Fishman, I believe I've seen you post this on another forum and had a response there already. Are you sorted now or still having a problem?
Reply With Quote Quick reply to this message  
Join Date: Jan 2004
Posts: 7
Reputation: fishman is an unknown quantity at this point 
Solved Threads: 0
fishman fishman is offline Offline
Newbie Poster

Re: Creating and destroying objects

 
0
  #3
Feb 20th, 2004
Hi Bob

Sorry if cross posting is frowned upon, my impatience got the better of me! I have not been able to log onto the other forum (I think their server is playing up) but have been trying to solve the problem on my own and think I have succeeded, at least I have some working code. I think the problem with the original was that I was creating objects in different scopes. The first batch of fry were made in the main function, the second batch were in curly brackets in an if loop. If I try to do all from the main function it all seems to work.

int noeggs = 5, nofry = 5;

Stage1 *eggs;
eggs = new Stage1[noeggs](5);
cout << "Eggs age is " << eggs[1].getAge() << endl;


Stage2 *fry;
fry = new Stage2[nofry](10);
cout << "Fry age is " << fry[1].getAge() << endl;
delete [] fry;
fry = new Stage2[noeggs](0);
cout << "new fry age is " << fry[1].getAge() << endl;

fry[1].setAge(eggs[1].getAge());
cout << "reset fry age is " << eggs[1].getAge() << endl;

This is a bit of code to show how I solved the problem, it illustrates how I now creata and destroy and re-create the objects in the main function and pass the egg ages to the fry. I will post the reply from the other forum when I can log on for others information and will not cross post in future.
fishman
Reply With Quote Quick reply to this message  
Join Date: Jan 2004
Posts: 7
Reputation: fishman is an unknown quantity at this point 
Solved Threads: 0
fishman fishman is offline Offline
Newbie Poster

Re: Creating and destroying objects

 
0
  #4
Feb 20th, 2004
oooops, last line should have read


cout << "reset fry age is " << fry[1].getAge() << endl;
Reply With Quote Quick reply to this message  
Join Date: Feb 2003
Posts: 129
Reputation: Bob is an unknown quantity at this point 
Solved Threads: 1
Team Colleague
Bob Bob is offline Offline
Team Member

Re: Creating and destroying objects

 
0
  #5
Feb 20th, 2004
Originally Posted by fishman
Hi Bob

Sorry if cross posting is frowned upon, my impatience got the better of me!
No, there's no reason why you can't post to multiple sites. It's not a problem.
Reply With Quote Quick reply to this message  
Reply

This thread is more than three months old.
Perhaps start a new thread instead?
Message:


Thread Tools Search this Thread



About Us | Contact Us | Advertise | DaniWeb | Acceptable Use Policy | RSS Feed

©2003 - 2009 DaniWeb® LLC