C++ Help
Nov 4 2008, 9:58 am
By: Souma  

Nov 4 2008, 9:58 am Souma Post #1



Hello! I need your help D:! I've been following my book on learning C++ and well I decided to make something simple but I'm stuck D:.

I have 3 files, 2 ".cpp" and 1 header file ".h". Here it is:

main.cpp
Quote
#include <iostream>
#include "functions.cpp"

using namespace std;

int main()
{
cout << "Hi";

char response;
cin >> response;

return 0;
}

functions.cpp
Quote
#include "monster.h"

Monster::SetHP(int HP)
{
itsHP = HP;
}
Monster::SetSP(int SP)
{
itsSP = SP;
}

Monster::GetHP()
{
return itsHP;
}
Monster::GetSP()
{
return itsSP;
}

monster.h
Quote
#include <iostream>

class Monster
{
private:
unsigned int itsHP;
unsigned int itsSP;

public:
void SetHP(int HP = 50);
void SetSP(int SP = 50);
unsigned int GetHP() const;
unsigned int GetSP() const;
};

When I try to build this, I get a huge load of errors. It'll be way too long to list here, and I'm fairly sure I probably have some tiny error somewhere...hopefully D:. In main I just put "Hi" because I wanted to see if it would build at least before I moved on to making what I wanted. So if anyone sees anything wrong and can help me out, I would love juu 4eva ^^ !

Thanks :D !



None.

Nov 4 2008, 3:06 pm Oyen Post #2



Well, I'm a bit new to visual c++ as well, but if I recall correctly, you can't use include statements for .cpp files. Try changing the #include "functions.cpp" to #include "monster.h"

Also:
Quote
Monster::SetHP(int HP)
{
itsHP = HP;
}
Monster::SetSP(int SP)
{
itsSP = SP;
}

Monster::GetHP()
{
return itsHP;
}
Monster::GetSP()
{
return itsSP;
}
You forgot to put the return type for these member functions. The first two functions should probably accept an unsigned int, so that the function won't accept a negative int, which will screw up the itsHP/itsSP variables from gaining a value. You also forgot the const for the last two. It should look like this:

void Monster::SetHP(unsigned int HP)
{
itsHP = HP;
}
void Monster::SetSP(unsigned int SP)
{
itsSP = SP;
}

unsigned int Monster::GetHP() const
{
return itsHP;
}
unsigned int Monster::GetSP() const
{
return itsSP;
}

Post has been edited 1 time(s), last time on Nov 4 2008, 3:14 pm by Oyen.



None.

Nov 4 2008, 8:58 pm Souma Post #3



Thank You for the reply! I never knew you couldn't include ".cpp". I changed functions.cpp to functions.h and did what you told me to. The huge load of errors went down to 2 :) .

Quote
...\functions.h(4) : error C2511: 'void Monster::SetHP(unsigned int)' : overloaded member function not found in 'Monster'
...\functions.h(8) : error C2511: 'void Monster::SetSP(unsigned int)' : overloaded member function not found in 'Monster'

I have no idea what this means o.o. If you could or someone else can help me again D:. <3!



None.

Nov 4 2008, 9:19 pm ClansAreForGays Post #4



Either you're send an int to a method that doesn't have an int parameter, or your only calling one that needs one.




Nov 4 2008, 9:50 pm Oyen Post #5



Quote from Souma
Thank You for the reply! I never knew you couldn't include ".cpp". I changed functions.cpp to functions.h and did what you told me to. The huge load of errors went down to 2 :) .

Quote
...\functions.h(4) : error C2511: 'void Monster::SetHP(unsigned int)' : overloaded member function not found in 'Monster'
...\functions.h(8) : error C2511: 'void Monster::SetSP(unsigned int)' : overloaded member function not found in 'Monster'

I have no idea what this means o.o. If you could or someone else can help me again D:. <3!

Oh, I forgot to mention that you need to change the declarations of those member functions in the header file to each have an unsigned int as a parameter instead of int.
In otherwords, change this:
Quote
public:
void SetHP(int HP = 50);
void SetSP(int SP = 50);

unsigned int GetHP() const;
unsigned int GetSP() const;
to this:
Quote
public:
void SetHP(unsigned int HP = 50);
void SetSP(unsigned int SP = 50);

unsigned int GetHP() const;
unsigned int GetSP() const;




None.

Nov 4 2008, 11:43 pm Souma Post #6



Quote from ClansAreForGays
Either you're send an int to a method that doesn't have an int parameter, or your only calling one that needs one.
I have no idea what you just said D:!

Quote from Oyen
Oh, I forgot to mention that you need to change the declarations of those member functions in the header file to each have an unsigned int as a parameter instead of int.
In otherwords, change this:
Quote
public:
void SetHP(int HP = 50);
void SetSP(int SP = 50);

unsigned int GetHP() const;
unsigned int GetSP() const;
to this:
Quote
public:
void SetHP(unsigned int HP = 50);
void SetSP(unsigned int SP = 50);

unsigned int GetHP() const;
unsigned int GetSP() const;
I had already done that before posting D:, same error o.o! Here I'll post the new updated files:

functions.h
Quote
#include "monster.h"

void Monster::SetHP(unsigned int HP)
{
itsHP = HP;
}
void Monster::SetSP(unsigned int SP)
{
itsSP = SP;
}

unsigned int Monster::GetHP() const
{
return itsHP;
}
unsigned int Monster::GetSP() const
{
return itsSP;
}

monster.h
Quote
class Monster
{
private:
unsigned int itsHP;
unsigned int itsSP;

public:
void SetHP(unsigned int HP = 50) const;
void SetSP(unsigned int SP = 50) const;
unsigned int GetHP() const;
unsigned int GetSP() const;
};

Thanks Again!



None.

Nov 5 2008, 12:46 am Oyen Post #7



Quote
public:
void SetHP(unsigned int HP = 50) const;
void SetSP(unsigned int SP = 50) const;

unsigned int GetHP() const;
unsigned int GetSP() const;
};
Take the const off the Set functions. It prevents the private variables from being changed.

If you are still having problems after doing that, I will copy your code into my own copy of visual c++ and try to get it to work.

Did you change the functions.cpp file to a .h file? :wtfage:



None.

Nov 5 2008, 1:01 am Souma Post #8



Oooo! Thanks! I didn't notice I put const after that.

It works now! ^^ ^^ ^^



None.

Nov 5 2008, 1:05 am Oyen Post #9



Good for you! :D
Glad I could help.



None.

Options
  Back to forum
Please log in to reply to this topic or to report it.
Members in this topic: None.
[04:42 am]
Zycorax -- :wob:
[06:38 pm]
Ultraviolet -- :wob:
[2026-6-29. : 2:13 pm]
Vrael -- pee poo sibling
[2026-6-28. : 7:00 pm]
Symmetry -- poo poo papa
[2026-6-28. : 2:46 pm]
lil-Inferno -- pee pee child
[2026-6-27. : 6:10 pm]
Ultraviolet -- sweet summer child
[2026-6-26. : 10:31 am]
NudeRaider -- blessed innocent soul knows nothing of the strife we had before EUDs were discovered :teehee:
[2026-6-23. : 3:29 am]
DarkenedFantasies -- Probably just didn't care. For example, at some point before release, they've updated the graphics of some of the Protoss buildings (Forge, CyberCore, Citadel, Observatory, Arbiter Tribunal), but instead of properly re-rendering them with edited 3D models, they did crappy copy-paste jobs on the rendered graphics.
[2026-6-22. : 8:35 pm]
Ultraviolet -- :wob:
[2026-6-21. : 11:38 pm]
Symmetry -- :wob:
Please log in to shout.


Members Online: RIVE, Zycorax, O)FaRTy1billion[MM]