943,955 Members | Top Members by Rank

Ad:
  • C++ Discussion Thread
  • Marked Solved
  • Views: 544
  • C++ RSS
Sep 24th, 2009
0

Number of Variables in Constructor

Expand Post »
I have a question that pertains to any programming language but since C/C++ is my primary language I'll ask it here.

I'm designing a test program that will simulate the outcome of a 12 round fight between 2 boxers. Now my question is, is there a limit or number I should shoot for in regards to the number of member variables a class should have?

Since my objects are representing people, very specific types of people, I seem to have a large number of member variables. These represent everything from first and last name to strength, stamina, speed, agility etc.

The reason I ask this, is because my constructor is very large and I have like 40 variables in the constructor initialization list. I'm just wondered if this is a common occurrence in games or in other large applications? Or is my class too bloated?

I'm doing everything all my books have told me too do as far as breaking down the parts of a person into smaller logical parts, but none of the books I have read so far delve into what to do with classes that have this many members. I just wanted to know if I'm missing some fundamental concept I should be using to address the growing number of members my classes have.

Any help or opinions would be great!
Thx
Similar Threads
Reputation Points: 10
Solved Threads: 0
Newbie Poster
Vallnerik is offline Offline
4 posts
since Sep 2009
Sep 24th, 2009
0

Re: Number of Variables in Constructor

Click to Expand / Collapse  Quote originally posted by Vallnerik ...
The reason I ask this, is because my constructor is very large and I have like 40 variables in the constructor initialization list. I'm just wondered if this is a common occurrence in games or in other large applications? Or is my class too bloated?
40 members are a bit too much IMO. Have you considered using more then 1 class? For example:

C++ Syntax (Toggle Plain Text)
  1. class Human {
  2. public:
  3. Human::Human(std::string name, std::string last_name, int age);
  4. private:
  5. std::string name;
  6. std::string last_name;
  7. int age;
  8. //etc
  9. };
  10.  
  11. class Skills {
  12. public:
  13. Skills::Skills(int att, int defense) ;
  14. private:
  15. int attack;
  16. int defense;
  17. //etc
  18. };
  19.  
  20. class Boxer {
  21. public:
  22. Boxer(Human* hum, Skills* sk);
  23. private:
  24. Human* human;
  25. Skills* skills
  26. };
Moderator
Featured Poster
Reputation Points: 4142
Solved Threads: 394
Industrious Poster
Nick Evan is offline Offline
4,132 posts
since Oct 2006
Sep 24th, 2009
0

Re: Number of Variables in Constructor

niek_e

Thank You for your response.

yes, I am currently inheriting my specialized persons classes from a more general human class, but my skills class and my attributes class are still really large. And your response brings about another question for me, should my skills class and my attributes class be nested within the more specialized boxer class or should I just use pointers in the constructor to point to them as you did?

Thx again
Reputation Points: 10
Solved Threads: 0
Newbie Poster
Vallnerik is offline Offline
4 posts
since Sep 2009
Sep 24th, 2009
0

Re: Number of Variables in Constructor

Ahh I see why I shouldn't nest them inside the CBoxer class, because if I ever wanted to add another specialized class like CKarateMaster, I would have to nest the attributes class and the stats class within each specialized class instead of just pointing to it in the constructor. Your way future proofs it from needless over-typing.
Reputation Points: 10
Solved Threads: 0
Newbie Poster
Vallnerik is offline Offline
4 posts
since Sep 2009
Sep 24th, 2009
0

Re: Number of Variables in Constructor

Also you might want to think about abstract classs.
Reputation Points: 840
Solved Threads: 594
Senior Poster
firstPerson is offline Offline
3,864 posts
since Dec 2008

This thread is solved

Either the thread starter or a moderator has marked this thread as solved. You can most likely trust the responses and answers given. There is most likely no reason for any further responses to be posted here. If you have a related question, please start a new thread in this forum instead.

This thread is more than three months old

No one has posted to this discussion for at least three months. Please let old threads die and do not reply to them unless you feel you have something new and valuable to contribute that absolutely must be added to make the discussion complete. Otherwise, please start a new thread in this forum instead.
Message:
Previous Thread in C++ Forum Timeline: passing values between dialog boxes
Next Thread in C++ Forum Timeline: C++ random between two choices ?





About Us | Contact Us | Advertise | Acceptable Use Policy
Forum Index | Build Custom RSS Feed


Follow us on Twitter


© 2011 DaniWeb® LLC