c++ 初学者 vc6.0 bool类型函数的问题

tianshuang.me 2013-11-15 10:26:51

中间这条语句编译时出错,请问是怎么回事?能否帮我解答一下
...全文
457 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
max_min_ 2013-11-16
  • 打赏
  • 举报
回复
引用 5 楼 u012552052 的回复:
[quote=引用 2 楼 baichi4141 的回复:] 在调用IsLeapYear()函数的那行,该函数未被声明或者格式错误,因此编译器不认识这个函数,假定这个函数的返回值为int,所以编译器告诉楼主 错误:不认识IsLeapYear这个函数 警告:int和bool不能比较是否相等
我把==true删了就正常了[/quote] 哪里的==true ,不在你上面贴出来的代码中呢? 把完整的代码贴出来看看,IsLeapYear函数怎么调用?
junlinfushi 2013-11-16
  • 打赏
  • 举报
回复
引用 6 楼 u012552052 的回复:
[quote=引用 4 楼 junlinfushi 的回复:] 你这个是CDate类的函数吧?如果你是类内部调用,应该没问题。但是类外部调用,也应该使用对象调用才对吧。 对象.IsLeapYear()
那个if语句就是内部成员函数里的,再调用另一个内部成员函数应该没问题吧[/quote]其实你是true的话,根本不用加==true判断的,默认就是true的,如果你要判断false,那你就if(!IsLeapYear()),在前面加个叹号就可以了
tianshuang.me 2013-11-16
  • 打赏
  • 举报
回复
引用 1 楼 u012183952 的回复:
BOOL ?
嗯嗯
tianshuang.me 2013-11-16
  • 打赏
  • 举报
回复
引用 4 楼 junlinfushi 的回复:
你这个是CDate类的函数吧?如果你是类内部调用,应该没问题。但是类外部调用,也应该使用对象调用才对吧。 对象.IsLeapYear()
那个if语句就是内部成员函数里的,再调用另一个内部成员函数应该没问题吧
tianshuang.me 2013-11-16
  • 打赏
  • 举报
回复
引用 2 楼 baichi4141 的回复:
在调用IsLeapYear()函数的那行,该函数未被声明或者格式错误,因此编译器不认识这个函数,假定这个函数的返回值为int,所以编译器告诉楼主 错误:不认识IsLeapYear这个函数 警告:int和bool不能比较是否相等
我把==true删了就正常了
tianshuang.me 2013-11-16
  • 打赏
  • 举报
回复
引用 11 楼 u012552052 的回复:
[quote=引用 9 楼 max_min_ 的回复:] [quote=引用 5 楼 u012552052 的回复:] [quote=引用 2 楼 baichi4141 的回复:] 在调用IsLeapYear()函数的那行,该函数未被声明或者格式错误,因此编译器不认识这个函数,假定这个函数的返回值为int,所以编译器告诉楼主 错误:不认识IsLeapYear这个函数 警告:int和bool不能比较是否相等
我把==true删了就正常了[/quote] 哪里的==true ,不在你上面贴出来的代码中呢? 把完整的代码贴出来看看,IsLeapYear函数怎么调用?[/quote] 程序终于改好了,是定义IsLeapYear函数时没声明类,现在好了
#include <iostream>
#include <iomanip>
using namespace std;

class CDate               					
{   	
public:
	CDate();
	CDate(int day, int month, int year);
	CDate(CDate &c);
	bool IsLeapYear();
	void SetDate();
	void monthadd();
	void dayadd();
	void AddDay();
	void Display();
	int getNUMBER()
	{
		return NUMBER;
	}
	~CDate(){};
private:
	int day;
	int month;
	int year;
	int number;
	int NUMBER;
};

CDate::CDate():day(1),month(1),year(2013){}

bool CDate::IsLeapYear()
{
	if ((year%4==0&&year%100!=0)||(year%400==0))
		return true;
	else
		return false;
}


void CDate::SetDate()
{
	cout<<"请按照日 月 年的格式设置当前日期,请输入数据:";
	cin>>day>>month>>year;
	if (IsLeapYear())
	{
		if (month==1||month==3||month==5||month==7||month==8||month==10||month==12)
		{
			if (1<=day&&day<=31)
				cout<<"设置日期成功!"<<endl;
			else
				cout<<"日期输入错误!"<<endl;
		}
		else if (month==4||month==6||month==9||month==11)
		{
			if (1<=day&&day<=30)
				cout<<"设置日期成功!!"<<endl;
			else
				cout<<"日期输入错误!"<<endl;
		}
		else
		{
			if (1<=day&&day<=29)
				cout<<"设置日期成功!"<<endl;
			else
				cout<<"日期输入错误!"<<endl;
		}
	}
	else
	{
		if (month==1||month==3||month==5||month==7||month==8||month==10||month==12)
		{
			if (1<=day&&day<=31)
				cout<<"设置日期成功!"<<endl;
			else
				cout<<"日期输入错误!"<<endl;
		}
		else if (month==4||month==6||month==9||month==11)
		{
			if (1<=day&&day<=30)
				cout<<"设置日期成功!"<<endl;
			else
				cout<<"日期输入错误!"<<endl;
		}
		else
		{
			if (1<=day&&day<=28)
				cout<<"设置日期成功!"<<endl;
			else
				cout<<"日期输入错误!"<<endl;
		}
	}

}

void CDate::monthadd()
{
	if (IsLeapYear()==true)
	{
c:		switch(month)
		{
		case 1:
			if (number>31)
			{
				month++;
				number-=31;
			}
			else
				break;
		case 2:
			if (number>29)
			{
				month++;
				number-=29;
			}
			else
				break;
		case 3:
			if (number>31)
			{
				month++;
				number-=31;
			}
			else
				break;
		case 4:
			if (number>30)
			{
				month++;
				number-=30;
			}
			else
				break;
		case 5:
			if (number>31)
			{
				month++;
				number-=31;
			}
			else
				break;
		case 6:
			if (number>30)
			{
				month++;
				number-=30;
			}
			else
				break;
		case 7:
			if (number>31)
			{
				month++;
				number-=31;
			}
			else
				break;
		case 8:
			if (number>31)
			{
				month++;
				number-=31;
			}
			else
				break;
		case 9:
			if (number>30)
			{
				month++;
				number-=30;
			}
			else
				break;
		case 10:
			if (number>31)
			{
				month++;
				number-=31;
			}
			else
				break;
		case 11:
			if (number>30)
			{
				month++;
				number-=30;
			}
			else
				break;
		case 12:
			if (number>31)
			{
				month=1;
				year++;
				number-=31;
				if (IsLeapYear()==true)
					goto c;
				else
					goto d;
			}
			else
				break;
		default:
			break;
		}
		dayadd();
	}
	else
	{
d:		switch(month)
		{
		case 1:
			if (number>31)
			{
				month++;
				number-=31;
			}
			else
				break;
		case 2:
			if (number>28)
			{
				month++;
				number-=28;
			}
			else
				break;
		case 3:
			if (number>31)
			{
				month++;
				number-=31;
			}
			else
				break;
		case 4:
			if (number>30)
			{
				month++;
				number-=30;
			}
			else
				break;
		case 5:
			if (number>31)
			{
				month++;
				number-=31;
			}
			else
				break;
		case 6:
			if (number>30)
			{
				month++;
				number-=30;
			}
			else
				break;
		case 7:
			if (number>31)
			{
				month++;
				number-=31;
			}
			else
				break;
		case 8:
			if (number>31)
			{
				month++;
				number-=31;
			}
			else
				break;
		case 9:
			if (number>30)
			{
				month++;
				number-=30;
			}
			else
				break;
		case 10:
			if (number>31)
			{
				month++;
				number-=31;
			}
			else
				break;
		case 11:
			if (number>30)
			{
				month++;
				number-=30;
			}
			else
				break;
		case 12:
			if (number>31)
			{
				month=1;
				year++;
				number-=31;
				if (IsLeapYear()==true)
					goto c;
				else
					goto d;
			}
			else
				break;
		default:
			break;
		}
		dayadd();
	}
}

void CDate::dayadd()
{
	switch(month)
	{
	case 1:
		day+=number;
		if (day>31)
		{
			month++;
			day-=31;
		}
		break;
	case 2:
		day+=number;
		if (IsLeapYear()==true)
		{
			if (day>29)
			{
				month++;
				day-=29;
			}
			break;
		}
		else
		{
			if (day>28)
			{
				month++;
				day-=28;
			}
			break;
		}
		break;
	case 3:
		day+=number;
		if (day>31)
		{
			month++;
			day-=31;
		}
		break;
	case 4:
		day+=number;
		if (day>30)
		{
			month++;
			day-=30;
		}
		break;
	case 5:
		day+=number;
		if (day>31)
		{
			month++;
			day-=31;
		}
		break;
	case 6:
		day+=number;
		if (day>30)
		{
			month++;
			day-=30;
		}
		break;
	case 7:
		day+=number;
		if (day>31)
		{
			month++;
			day-=31;
		}
		break;
	case 8:
		day+=number;
		if (day>31)
		{
			month++;
			day-=31;
		}
		break;
	case 9:
		day+=number;
		if (day>30)
		{
			month++;
			day-=30;
		}
		break;
	case 10:
		day+=number;
		if (day>31)
		{
			month++;
			day-=31;
		}
		break;
	case 11:
		day+=number;
		if (day>30)
		{
			month++;
			day-=30;
		}
		break;
	case 12:
		day+=number;
		if (day>31)
		{
			month=1;
			year++;
			day-=31;
		}
		break;
	default:
		break;
	}
}

void CDate::AddDay()
{
	cout<<"请输入要加的天数:";
	cin>>number;
	NUMBER=number;
	if (IsLeapYear()==true)
	{
a:		if (number>=366)
		{
			for(;number/366!=0;)
			{
				year++;
				number-=366;
				if (IsLeapYear()==false)
					goto b;
			}
			monthadd();
		}
		else
			monthadd();
	}
	else
	{
b:		if (number>=365)
		{
			for(;number/365!=0;)
			{
				year++;
				number-=365;
				if (IsLeapYear()==true)
					goto a;
			}
			monthadd();
		}
		else
			monthadd();
	}
}

void CDate::Display()
{
	cout<<year<<"."<<setw(2)<<setfill('0')<<month<<"."<<setw(2)<<setfill('0')<<day<<endl;
}

void main()
{
	CDate a;
	a.SetDate();
	cout<<"您设置的日期为:";
	a.Display();
	a.AddDay();
	cout<<a.getNUMBER()<<"天后的日期为:";
	a.Display();
}
[/quote] 说错了,是是定义addday函数时没声明类
tianshuang.me 2013-11-16
  • 打赏
  • 举报
回复
引用 9 楼 max_min_ 的回复:
[quote=引用 5 楼 u012552052 的回复:] [quote=引用 2 楼 baichi4141 的回复:] 在调用IsLeapYear()函数的那行,该函数未被声明或者格式错误,因此编译器不认识这个函数,假定这个函数的返回值为int,所以编译器告诉楼主 错误:不认识IsLeapYear这个函数 警告:int和bool不能比较是否相等
我把==true删了就正常了[/quote] 哪里的==true ,不在你上面贴出来的代码中呢? 把完整的代码贴出来看看,IsLeapYear函数怎么调用?[/quote] 程序终于改好了,是定义IsLeapYear函数时没声明类,现在好了
#include <iostream>
#include <iomanip>
using namespace std;

class CDate               					
{   	
public:
	CDate();
	CDate(int day, int month, int year);
	CDate(CDate &c);
	bool IsLeapYear();
	void SetDate();
	void monthadd();
	void dayadd();
	void AddDay();
	void Display();
	int getNUMBER()
	{
		return NUMBER;
	}
	~CDate(){};
private:
	int day;
	int month;
	int year;
	int number;
	int NUMBER;
};

CDate::CDate():day(1),month(1),year(2013){}

bool CDate::IsLeapYear()
{
	if ((year%4==0&&year%100!=0)||(year%400==0))
		return true;
	else
		return false;
}


void CDate::SetDate()
{
	cout<<"请按照日 月 年的格式设置当前日期,请输入数据:";
	cin>>day>>month>>year;
	if (IsLeapYear())
	{
		if (month==1||month==3||month==5||month==7||month==8||month==10||month==12)
		{
			if (1<=day&&day<=31)
				cout<<"设置日期成功!"<<endl;
			else
				cout<<"日期输入错误!"<<endl;
		}
		else if (month==4||month==6||month==9||month==11)
		{
			if (1<=day&&day<=30)
				cout<<"设置日期成功!!"<<endl;
			else
				cout<<"日期输入错误!"<<endl;
		}
		else
		{
			if (1<=day&&day<=29)
				cout<<"设置日期成功!"<<endl;
			else
				cout<<"日期输入错误!"<<endl;
		}
	}
	else
	{
		if (month==1||month==3||month==5||month==7||month==8||month==10||month==12)
		{
			if (1<=day&&day<=31)
				cout<<"设置日期成功!"<<endl;
			else
				cout<<"日期输入错误!"<<endl;
		}
		else if (month==4||month==6||month==9||month==11)
		{
			if (1<=day&&day<=30)
				cout<<"设置日期成功!"<<endl;
			else
				cout<<"日期输入错误!"<<endl;
		}
		else
		{
			if (1<=day&&day<=28)
				cout<<"设置日期成功!"<<endl;
			else
				cout<<"日期输入错误!"<<endl;
		}
	}

}

void CDate::monthadd()
{
	if (IsLeapYear()==true)
	{
c:		switch(month)
		{
		case 1:
			if (number>31)
			{
				month++;
				number-=31;
			}
			else
				break;
		case 2:
			if (number>29)
			{
				month++;
				number-=29;
			}
			else
				break;
		case 3:
			if (number>31)
			{
				month++;
				number-=31;
			}
			else
				break;
		case 4:
			if (number>30)
			{
				month++;
				number-=30;
			}
			else
				break;
		case 5:
			if (number>31)
			{
				month++;
				number-=31;
			}
			else
				break;
		case 6:
			if (number>30)
			{
				month++;
				number-=30;
			}
			else
				break;
		case 7:
			if (number>31)
			{
				month++;
				number-=31;
			}
			else
				break;
		case 8:
			if (number>31)
			{
				month++;
				number-=31;
			}
			else
				break;
		case 9:
			if (number>30)
			{
				month++;
				number-=30;
			}
			else
				break;
		case 10:
			if (number>31)
			{
				month++;
				number-=31;
			}
			else
				break;
		case 11:
			if (number>30)
			{
				month++;
				number-=30;
			}
			else
				break;
		case 12:
			if (number>31)
			{
				month=1;
				year++;
				number-=31;
				if (IsLeapYear()==true)
					goto c;
				else
					goto d;
			}
			else
				break;
		default:
			break;
		}
		dayadd();
	}
	else
	{
d:		switch(month)
		{
		case 1:
			if (number>31)
			{
				month++;
				number-=31;
			}
			else
				break;
		case 2:
			if (number>28)
			{
				month++;
				number-=28;
			}
			else
				break;
		case 3:
			if (number>31)
			{
				month++;
				number-=31;
			}
			else
				break;
		case 4:
			if (number>30)
			{
				month++;
				number-=30;
			}
			else
				break;
		case 5:
			if (number>31)
			{
				month++;
				number-=31;
			}
			else
				break;
		case 6:
			if (number>30)
			{
				month++;
				number-=30;
			}
			else
				break;
		case 7:
			if (number>31)
			{
				month++;
				number-=31;
			}
			else
				break;
		case 8:
			if (number>31)
			{
				month++;
				number-=31;
			}
			else
				break;
		case 9:
			if (number>30)
			{
				month++;
				number-=30;
			}
			else
				break;
		case 10:
			if (number>31)
			{
				month++;
				number-=31;
			}
			else
				break;
		case 11:
			if (number>30)
			{
				month++;
				number-=30;
			}
			else
				break;
		case 12:
			if (number>31)
			{
				month=1;
				year++;
				number-=31;
				if (IsLeapYear()==true)
					goto c;
				else
					goto d;
			}
			else
				break;
		default:
			break;
		}
		dayadd();
	}
}

void CDate::dayadd()
{
	switch(month)
	{
	case 1:
		day+=number;
		if (day>31)
		{
			month++;
			day-=31;
		}
		break;
	case 2:
		day+=number;
		if (IsLeapYear()==true)
		{
			if (day>29)
			{
				month++;
				day-=29;
			}
			break;
		}
		else
		{
			if (day>28)
			{
				month++;
				day-=28;
			}
			break;
		}
		break;
	case 3:
		day+=number;
		if (day>31)
		{
			month++;
			day-=31;
		}
		break;
	case 4:
		day+=number;
		if (day>30)
		{
			month++;
			day-=30;
		}
		break;
	case 5:
		day+=number;
		if (day>31)
		{
			month++;
			day-=31;
		}
		break;
	case 6:
		day+=number;
		if (day>30)
		{
			month++;
			day-=30;
		}
		break;
	case 7:
		day+=number;
		if (day>31)
		{
			month++;
			day-=31;
		}
		break;
	case 8:
		day+=number;
		if (day>31)
		{
			month++;
			day-=31;
		}
		break;
	case 9:
		day+=number;
		if (day>30)
		{
			month++;
			day-=30;
		}
		break;
	case 10:
		day+=number;
		if (day>31)
		{
			month++;
			day-=31;
		}
		break;
	case 11:
		day+=number;
		if (day>30)
		{
			month++;
			day-=30;
		}
		break;
	case 12:
		day+=number;
		if (day>31)
		{
			month=1;
			year++;
			day-=31;
		}
		break;
	default:
		break;
	}
}

void CDate::AddDay()
{
	cout<<"请输入要加的天数:";
	cin>>number;
	NUMBER=number;
	if (IsLeapYear()==true)
	{
a:		if (number>=366)
		{
			for(;number/366!=0;)
			{
				year++;
				number-=366;
				if (IsLeapYear()==false)
					goto b;
			}
			monthadd();
		}
		else
			monthadd();
	}
	else
	{
b:		if (number>=365)
		{
			for(;number/365!=0;)
			{
				year++;
				number-=365;
				if (IsLeapYear()==true)
					goto a;
			}
			monthadd();
		}
		else
			monthadd();
	}
}

void CDate::Display()
{
	cout<<year<<"."<<setw(2)<<setfill('0')<<month<<"."<<setw(2)<<setfill('0')<<day<<endl;
}

void main()
{
	CDate a;
	a.SetDate();
	cout<<"您设置的日期为:";
	a.Display();
	a.AddDay();
	cout<<a.getNUMBER()<<"天后的日期为:";
	a.Display();
}
tianshuang.me 2013-11-16
  • 打赏
  • 举报
回复
引用 8 楼 junlinfushi 的回复:
[quote=引用 6 楼 u012552052 的回复:] [quote=引用 4 楼 junlinfushi 的回复:] 你这个是CDate类的函数吧?如果你是类内部调用,应该没问题。但是类外部调用,也应该使用对象调用才对吧。 对象.IsLeapYear()
那个if语句就是内部成员函数里的,再调用另一个内部成员函数应该没问题吧[/quote]其实你是true的话,根本不用加==true判断的,默认就是true的,如果你要判断false,那你就if(!IsLeapYear()),在前面加个叹号就可以了[/quote] 哦哦 还不知道诶 谢谢
junlinfushi 2013-11-15
  • 打赏
  • 举报
回复
你这个是CDate类的函数吧?如果你是类内部调用,应该没问题。但是类外部调用,也应该使用对象调用才对吧。 对象.IsLeapYear()
turing-complete 2013-11-15
  • 打赏
  • 举报
回复
CDate::IsLeapYear() 的调用方式不对。 另,请贴图的同时附上源码,方便别人复制,能够是你尽快得到回复。
baichi4141 2013-11-15
  • 打赏
  • 举报
回复
在调用IsLeapYear()函数的那行,该函数未被声明或者格式错误,因此编译器不认识这个函数,假定这个函数的返回值为int,所以编译器告诉楼主 错误:不认识IsLeapYear这个函数 警告:int和bool不能比较是否相等
zxx178239 2013-11-15
  • 打赏
  • 举报
回复
BOOL ?

65,189

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧