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;

最简单的改法就是把struct Date

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;

本回答被提问者采纳
参考技术B struct 改成 class
C++ 中 struct 和 class 的 唯一 区别 是 默认的访问控制属性 不一样
struct 默认是 public class 默认是 private的

你可以将 那些函数 封装在 类 里面

以上是关于sc++ struct 想换成class写 谁能帮忙写一下的主要内容,如果未能解决你的问题,请参考以下文章

jquery:谁能帮我把这个幻灯片修改成七张图片的,还要滚动方式换成向左滚动的,是就query+css做的。

谁能帮我写一个 R 数据框作为 SAS 数据集?

我在自己写一个STL,其中的list使用双向链表的,谁能帮我写一个迭代器。

java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType这个异常怎么解决 谁能帮我一下

谁能帮我写一个java的回调函数的例子

谁能帮写一个点击链接自动弹出提示窗口的js代码?