Jump to content
  • Advertisement

Archived

This topic is now archived and is closed to further replies.

Baba

Need Help =(

This topic is 6236 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hey, I''m currently learning how to program C++ in "Teach Yourself C++ in 21 Days" and there is a sample program in the book that I''m trying to code. So I coded it and it compiled perfectly and all, but when I go to run it, it gives some "Debug Assertion Failed!" error or something. I have no idea what this means, yet someone said it may have to do with a memory leak. I have searched my code throughly and I''m stumped on what could be the problem, if it is a memory leak. So could somoene check it over and make sure I''m not doing something wrong. It''s a really easy program so it shouldn''t be too hard. It''s not commented or anything because it was supposed to just be a sample program in the book and I feel like I can''t move further on in the book without knowing exactly what I am doing wrong. I even compared my code to the books code and it seems to be about the same, so anywho, please help *More Information*: When the Assertion error comes up, it also says: "Expression:_BLOCK_TYPE_IS_VALID(pHead->nBlockUse)"
  
#include <iostream.h>

typedef unsigned short USHORT;

class SimpleCircle
{
public:
	SimpleCircle();
	 SimpleCircle(USHORT radius);
	 SimpleCircle(const SimpleCircle& rhs);
	~SimpleCircle();
	void SetRadius(USHORT newRadius) { *itsRadius = newRadius; }
	USHORT GetRadius() const { return *itsRadius; }
	const SimpleCircle& operator++();
	const SimpleCircle operator++(int);
	SimpleCircle& operator=(const SimpleCircle & rhs);

private:
	USHORT *itsRadius;
};

SimpleCircle::SimpleCircle()
{
	itsRadius = new USHORT(5);
}

SimpleCircle::SimpleCircle(USHORT radius)
{
	itsRadius = new USHORT(radius);
}

SimpleCircle::SimpleCircle(const SimpleCircle& rhs)
{
	USHORT val = rhs.GetRadius();
	itsRadius = new USHORT(val);
}


SimpleCircle::~SimpleCircle()
{
	delete itsRadius;
	itsRadius = 0;
}

SimpleCircle& SimpleCircle::operator=(const SimpleCircle & rhs)
{
	if(this == &rhs)
		return *this;
	delete itsRadius;
	itsRadius = new USHORT;
	*itsRadius = rhs.GetRadius();
	return *this;
}

const SimpleCircle& SimpleCircle::operator++()
{
	++(itsRadius);
	return *this;
}

const SimpleCircle SimpleCircle::operator++(int)
{
	SimpleCircle temp(*this);
	++(itsRadius);
	return temp;
}

int main()
{
	SimpleCircle CircleA;
	SimpleCircle CircleB(9);
	cout << "\nCircleA: " << CircleA.GetRadius();
	cout << "\nCircleB: " << CircleB.GetRadius();
	++CircleA;
	++CircleB;
	cout << "\nCircleA: " << CircleA.GetRadius();
	cout << "\nCircleB: " << CircleB.GetRadius();
	CircleA = CircleB;
	cout << "\nCircleA: " << CircleA.GetRadius();
	cout << "\nCircleB: " << CircleB.GetRadius();

	return 0;
}
  
Thanks

Share this post


Link to post
Share on other sites
Advertisement
Guest Anonymous Poster
You may replace all ++(itsRadius) statement with ++(*itsRadius).

After adding the star, you will get an output:
CircleA: 5
CircleB: 9
CircleA: 6
CircleB: 10
CircleA: 10
CircleB: 10

Is this output what you want?

Share this post


Link to post
Share on other sites
Ah it worked and it seem so clear now. So without the * on ++itsRadius, I was trying to increment the address the pointer pointed at which is what was causing the problem? The book''s example of this program didn''t have the * on ++itsRadius which is why I didn''t see it when I compared the two. I copied the books example exactly and it didn''t even work so I dunno whats up. Anywho, thanks for the help

Share this post


Link to post
Share on other sites

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!