#include <iostream>
using namespace std;
class critter{
public : // public section
critter (int hunger =0) ;
int gethunger() const ;
void sethunger (int hunger) ;
private :
int m_hunger ;
};
critter :: critter (int hunger) :
m_hunger (hunger)
{
cout << "new critter has been born" << endl ;
}
int critter :: gethunger() const
{
return m_hunger ;
}
void critter :: sethunger (int hunger)
{
if (hunger<0) {
cout << "you can not set a negative number to hunger" << endl ;
}
else {
m_hunger=hunger ;
}
}
int main ()
{
critter crit(5);
cout << "calling gethunger()"<<crit.gethunger()<<endl ;
cout << "calling sethunger ()" << crit.sethunger(-1) << endl ;
return 0 ;
}
我收到以下错误: 不匹配'operator&lt;&lt;'在'std :: operator&lt;&lt; &gt;((*&amp; std :: cout),((const char *)“call sethunger()”))&lt;&lt; crit.critter :: sethunger(-1)'
在这一行:
{cout&lt;&lt; “call sethunger()”&lt;&lt; crit.sethunger(-1)&lt;&lt;结束}
请告诉我为什么编译器不打印{你不能设置负数来饥饿}
答案 0 :(得分:2)
您的猜测是正确的:void
无法打印。您应该做的是在打印消息后致电sethunger()
:
cout << "calling sethunger ()" << endl;
crit.sethunger(-1);
关于您的更新: 请告诉我为什么编译器不打印{你不能设置负数来饥饿}
编写的消息不会由编译器打印,它们由编译的程序打印。只要您的代码无法编译,就没有可以编写消息的程序。
答案 1 :(得分:0)
cout << "calling sethunger ()" << crit.sethunger(-1) << endl ;
sethunger()成员函数返回一个void。当然,不能在std::cout
上写空。