sc++ struct 想换成class写 谁能帮忙写一下
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sc++ struct 想换成class写 谁能帮忙写一下相关的知识,希望对你有一定的参考价值。
我自学c++ 有这么一段程序 想改成class 这个程序并不涉及public private啊 更改哪些部分呢? 谢谢大家
#include <iostream>
using namespace std;
struct Date
int year;
int month;
int day;
;
int main()
Date date;
int count_day,i;
int month_day[13]=0,31,29,31,30,31,30,31,31,30,31,30,31;
bool leap;
cout<<"输入年:";
cin>>date.year;
cout<<"输入月:";
cin>>date.month;
cout<<"输入日:";
cin>>date.day;
count_day=date.day;
if ((date.year%4==0 && date.year%100!=0) || (date.year%400==0))
leap=true;
else
leap=false;
month_day[2]=28;
for(i=0;i<date.month;i++)
count_day=count_day+month_day[i];
cout<<"该日是本年第"<<count_day<<"天"<<endl;
return 0;
int year;
int month;
int day;
;
替换成
class Date
public:
int year;
int month;
int day;
;
不过如果不把main函数的处理数据部分改成成员函数,leap改成成员变量,month_day改成静态成员变量,就太暴殄天物了…… 参考技术A #include <iostream>
using namespace std;
class Date
private:
int year;
int month;
int day;
int febDays;
public:
static int month_day[13];
Date(int y, int m, int d)
year = y;
month = m;
day = d;
if (isLeapYear()) febDays = 29;
else febDays = 28;
bool isLeapYear()
if ((year%4==0 && year%100!=0) || (year%400==0)) return true;
else return false;
bool validate()
if ((month > 0 && day > 0
&& month < 13 && day <= month_day[month])
|| (month == 2 && day > 0 && day <= febDays))
return true;
return false;
int theDay()
int iA,febDays,countDays = day;
if (month == 1) return day;
else if (month == 2) return (countDays + 31);
else
for(iA = 1; iA < month; iA++)
countDays += month_day[i];
return (countDays + febDays);
;
int Date::month_day = 0,31,0,31,30,31,30,31,31,30,31,30,31;
int main()
int iY,iM,iD;
cout<<"输入年:";
cin>>iY;
cout<<"输入月:";
cin>>iM;
cout<<"输入日:";
cin>>iD;
Date date(iY, iM, iD);
if (date.validate()) cout<<"该日是本年第"<<date.theDay()<<"天"<<endl;
return 0;
追问
非常感谢您的帮忙 但是我复制到vc中运行有错误
追答等一会儿,我想办法找个编译器测试一下。
有如下错误:
date.cpp: 在成员函数‘int Date::theDay()’中:
date.cpp:48:32: 错误:‘i’在此作用域中尚未声明在全局域:
date.cpp:53:11: 错误:相互冲突的声明‘int Date::month_day’
date.cpp:12:26: 错误:‘Date::month_day’早先被声明为‘int Date::month_day [13]’
date.cpp:53:11: 错误:出现在类外的‘int Date::month_day [13]’的声明不是定义
解决办法:
1.修改 Date 类的 theDay 函数:去掉没有被赋值的局部变量 febDays;
countDays += month_day[i]; 这一句中的 i 改为 iA ;
2.将 int Date::month_day = 0,31,0,31,30,31,30,31,31,30,31,30,31; 改为:
int Date::month_day[13] = 0,31,0,31,30,31,30,31,31,30,31,30,31;
C++ 中 struct 和 class 的 唯一 区别 是 默认的访问控制属性 不一样
struct 默认是 public class 默认是 private的
你可以将 那些函数 封装在 类 里面
以上是关于sc++ struct 想换成class写 谁能帮忙写一下的主要内容,如果未能解决你的问题,请参考以下文章
jquery:谁能帮我把这个幻灯片修改成七张图片的,还要滚动方式换成向左滚动的,是就query+css做的。
我在自己写一个STL,其中的list使用双向链表的,谁能帮我写一个迭代器。
java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType这个异常怎么解决 谁能帮我一下