一个C++中关于类的问题,请大侠帮忙解决!

bcypxl 2011-11-13 09:36:25
#include<iostream>
using namespace std;

class Data
{
private:
int month,day,year;
char *Month[10]= {"January","February","March","April","May","June",
"July","August","September","October","November","December"};
public:
bool SetData(int,int,int);
void PutData()
{
cout << month << "-" << day << "-" << year%10 << endl;
cout << Month[month-1] << " " << day << "." << year << endl;
cout << day << " " << Month[month-1] << " " << year << endl;
}
};
bool Data::SetData(int y,int m,int d)
{
if(m>12 || m<1 || d>31 || d<1)
{
cout << "输入的日期有误!" << endl;
cout << "请重新输入:" << endl;
return false;
}
year = y;
month = m;
day = d;
return true;
}

int main()
{
Data YTD;
int year,month,day;

cout << "请输入年月日:";
cin >> year >> month >> day;
while(!YTD.SetData(year,month,day))
{
YTD.SetData(year,month,day);
}
cout << "按三种格式输出日期:\n";
YTD.PutData();
return 0;
}

编译时出现下面错误提示,我不知道是什么问题。
D:\C语言练习\类 习题1.cpp(8) : error C2059: syntax error : '{'
D:\C语言练习\类 习题1.cpp(8) : error C2334: unexpected token(s) preceding '{'; skipping apparent function body
...全文
101 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
奔跑的大象 2011-11-14
  • 打赏
  • 举报
回复
变量前加static才能在类里初始化的,其它的都在构造函数里初始化。
估计楼主喝高了。
机智的呆呆 2011-11-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 xiakan008 的回复:]
C/C++ code

char *Month[12] = {"January","February","March","April","May","June","July","August","September","October","November","December"};
//不能这么 初始化的
[/Quote]
这种类中非静态成员初始化的语法在支持c++11编译器木有问题,比如gcc4.7
lgp88 2011-11-13
  • 打赏
  • 举报
回复
char *Month[10]= {"January","February","March","April","May","June",
"July","August","September","October","November","December"};

类中的成员变量 不带这样初始化的吧, 放到构造函数中去赋值初始化, 还有一种是 成员变量列表初始化
無_1024 2011-11-13
  • 打赏
  • 举报
回复

#include<iostream>
using namespace std;

static const char Month[12][10]= {"January","February","March","April","May","June","July","August","September","October","November","December"};
class Data
{
private:
int month,day,year;
public:
bool SetData(int,int,int);
void PutData()
{
cout << month << "-" << day << "-" << year%10 << endl;
cout << Month[month-1] << " " << day << "." << year << endl;
cout << day << " " << Month[month-1] << " " << year << endl;
}
};
bool Data::SetData(int y,int m,int d)
{
if(m>12 || m<1 || d>31 || d<1)
{
cout << "输入的日期有误!" << endl;
cout << "请重新输入:" << endl;
return false;
}
year = y;
month = m;
day = d;
return true;
}

int main()
{
Data YTD;
int year,month,day;

cout << "请输入年月日:";
cin >> year >> month >> day;
while(!YTD.SetData(year,month,day))
{
YTD.SetData(year,month,day);
}
cout << "按三种格式输出日期:\n";
YTD.PutData();
return 0;
}
//如果是VS2010 编译器 可以这样写
#include<iostream>
using namespace std;

class Data
{
private:
int month,day,year;
static const char Month[12][10]= {"January","February","March","April","May","June","July","August","September","October","November","December"};
public:
bool SetData(int,int,int);
void PutData()
{
cout << month << "-" << day << "-" << year%10 << endl;
cout << Month[month-1] << " " << day << "." << year << endl;
cout << day << " " << Month[month-1] << " " << year << endl;
}
};
bool Data::SetData(int y,int m,int d)
{
if(m>12 || m<1 || d>31 || d<1)
{
cout << "输入的日期有误!" << endl;
cout << "请重新输入:" << endl;
return false;
}
year = y;
month = m;
day = d;
return true;
}

int main()
{
Data YTD;
int year,month,day;

cout << "请输入年月日:";
cin >> year >> month >> day;
while(!YTD.SetData(year,month,day))
{
YTD.SetData(year,month,day);
}
cout << "按三种格式输出日期:\n";
YTD.PutData();
return 0;
}

机智的呆呆 2011-11-13
  • 打赏
  • 举报
回复
一个问题是一年有十二个月,另外c++03不支持类声明中类似这样的初始化,只支持static const int=1这样的
char *Month[10]= {"January","February","March","April","May","June",
"July","August","September","October","November","December"};
vilnies 2011-11-13
  • 打赏
  • 举报
回复
char *Month[10]= {"January","February","March","April","May","June",
"July","August","September","October","November","December"};
不能直接赋值啊。

你可以放到类外面去拉
無_1024 2011-11-13
  • 打赏
  • 举报
回复
不能这么初始化 类的成员变量的初始化必须在构造函数初始化啊
BT六眼飞鱼 2011-11-13
  • 打赏
  • 举报
回复

char *Month[12] = {"January","February","March","April","May","June","July","August","September","October","November","December"};
//不能这么 初始化的

64,647

社区成员

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

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