私はここで全く新しいばかりですので、許してください。 結果が得られないので、コード全体をここに掲載します。C++で関数が動作しない
class DigitalPet
{
public:
DigitalPet (std::string);
~DigitalPet();
void talk();
void play();
void feed();
void setMemberName (std::string);
void setMemberMood();
std::string getMemberMood() const;
int getMemberHunger() const;
int getMemberBoredom() const;
private:
std::string m_memberName;
int m_memberHunger;
int m_memberBoredom;
std::string m_memberMood;
};
実装。
DigitalPet::DigitalPet(std::string name)
{
setMemberName (name);
m_memberHunger = 8;
m_memberBoredom = 4;
setMemberMood();
}
DigitalPet::~DigitalPet()
{
};
void DigitalPet::talk()
{
std::cout << "\nHello. My name is " << m_memberName << " and I am " << getMemberMood()<< std::endl;
m_memberHunger -= 2;
m_memberBoredom -= 2;
}
void DigitalPet::play()
{
m_memberHunger -= 4;
m_memberBoredom -= 2;
}
void DigitalPet::feed()
{
m_memberHunger += 4;
m_memberBoredom -= 1;
}
void DigitalPet::setMemberName (std::string name)
{
while (name.length() > 10)
{
std::cout << "The name you entered is too long. Please enter a smaller name!!!" << std::endl;
std::cin >> name;
}
m_memberName = name;
}
void DigitalPet::setMemberMood()
{
if (m_memberHunger <= 0 && m_memberBoredom <= 0)
{
m_memberMood = "mad";
}
else if (m_memberHunger > 0 && m_memberHunger <= 4 && m_memberBoredom > 0 && m_memberBoredom <= 2)
{
m_memberMood = "frustrated";
}
else if (m_memberHunger > 4 && m_memberHunger <= 8 && m_memberBoredom > 2 && m_memberBoredom <= 4)
{
m_memberMood = "good";
}
else if (m_memberHunger > 8 && m_memberHunger <= 12 && m_memberBoredom > 4 && m_memberBoredom <= 6)
{
m_memberMood = "happy";
}
}
std::string DigitalPet::getMemberMood() const
{
return m_memberMood;
}
int DigitalPet::getMemberHunger() const
{
return m_memberHunger;
}
int DigitalPet::getMemberBoredom() const
{
return m_memberBoredom;
}
ここで私はそれらを呼び出します。
int main()
{
DigitalPet Yama("Yama");
Yama.talk();
std::cout << Yama.getMemberBoredom()<< std::endl;
std::cout << Yama.getMemberHunger() << std::endl;
Yama.talk();
return 0;
}
今の問題はm_memberHungerとm_memberBoredomが減少するものの、それは「良い」気分を入力し続けていることです。
あなたのプログラムを投稿してください。あなたが行ったことを推測するのは嫌です。私は 'main()'を見ることができません。 – nvoigt
setMemberMood()はどこですか? – PierrOz
私はあなたが設定していて、別のインスタンスに乗っている感傷を持っています。あなたの呼び出しコードを確認する必要があります。 –