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.
[08:09 am]
Zycorax -- Greed
[03:25 am]
Symmetry -- why do the oligarchs want our mapping strategies???
[03:24 am]
Symmetry -- the question is why though
[01:10 am]
Butch -- made me feel really sad and stupid and fat
[01:10 am]
Butch -- I got duped by one and replied and then realized after
[11:26 pm]
Sie_Sayoka -- the turings have tested
[03:07 pm]
UndeadStar -- https://staredit.net/topic/18961/ <= wow, if there wasn't a capital letter on almost every word in the title, and a link in the signature, I may not have guesses it's an AI bot. I don't know much about map editing, but the content may even be relevant enough to be kept.
[2026-11-10. : 4:16 am]
lil-Inferno -- fart screen
[2026-11-09. : 3:49 pm]
NudeRaider -- Ultraviolet
Ultraviolet shouted: :wob: maybe not replaced, just add a discord applet below the shoutbox imo
split screen. Left side shoutbox, right side discord meme channel
[2026-11-08. : 10:23 pm]
Ultraviolet -- :wob: maybe not replaced, just add a discord applet below the shoutbox imo
Please log in to shout.


Members Online: MetalGear, RussellWalker106, Oh_Man, GerdinaMeer303