| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 586 人关注过本帖
标题:[帮帮忙] 构造函数搞不清楚 :(
只看楼主 加入收藏
wdufo
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2005-9-15
收藏
 问题点数:0 回复次数:3 
[帮帮忙] 构造函数搞不清楚 :(

小弟编写了下面代码,在类中想把构造函数放在类的外面定义
但是报错(49) : error C2512: 'Employee' : no appropriate default constructor available
请求援助~~

#include <iostream.h>
#include <string.h>

class Employee
{
public:
Employee(char*,char*,char*,char*,char*);
void ChangeName();
void Display();
protected:
char name[10];
char adress[20];
char city[20];
char province[20];
char postcode[10];
};

Employee::Employee(char NAME[]="UFO",char ADRESS[]="JLU",char CITY[]="CHANG CHUN",char PROVINCE[]="JI LIN",char POSTCODE[]="130000")
{
cout<<"Constructing :\n";
strcpy(name,NAME);
strcpy(adress,ADRESS);
strcpy(city,CITY);
strcpy(postcode,POSTCODE);
strcpy(province,PROVINCE);
}

void Employee::ChangeName()
{
char rename[10];
cin>>rename;
strcpy(name,rename);
name[sizeof(name)-1]='\0';
cout<<"cout name in ChangeName : "<<name<<endl;
}

void Employee::Display()
{
cout<<"Display members in function \"Display\" :"<<endl
<<"name\t\t: "<<name<<endl
<<"adress\t\t:"<<adress<<endl
<<"city\t\t:"<<city<<endl
<<"province\t:"<<province<<endl
<<"postcode\t:"<<postcode<<endl;
}

int main()
{
Employee new_1;
Employee new_2("Rangoon","He Gang");
new_1.Display();
new_2.Display();

return 0;
}

搜索更多相关主题的帖子: 函数 构造 
2005-11-10 19:37
wdufo
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2005-9-15
收藏
得分:0 

如果改写成下面这样就可以了,为什么呢?

#include <iostream.h>
#include <string.h>

class Employee
{
public:
Employee::Employee(char NAME[]="UFO",char ADRESS[]="JLU",char CITY[]="CHANG CHUN",char PROVINCE[]="JI LIN",char POSTCODE[]="130000")
{
cout<<"Constructing :\n";
strcpy(name,NAME);
strcpy(adress,ADRESS);
strcpy(city,CITY);
strcpy(postcode,POSTCODE);
strcpy(province,PROVINCE);
}

void ChangeName();
void Display();
protected:
char name[10];
char adress[20];
char city[20];
char province[20];
char postcode[10];
};

void Employee::ChangeName()
{
char rename[10];
cin>>rename;
strcpy(name,rename);
name[sizeof(name)-1]='\0';
cout<<"cout name in ChangeName : "<<name<<endl;
}

void Employee::Display()
{
cout<<"Display members in function \"Display\" :"<<endl
<<"name\t\t: "<<name<<endl
<<"adress\t\t:"<<adress<<endl
<<"city\t\t:"<<city<<endl
<<"province\t:"<<province<<endl
<<"postcode\t:"<<postcode<<endl;
}

int main()
{
Employee new_1;
Employee new_2("Rangoon","He Gang");
new_1.Display();
new_2.Display();

return 0;
}

2005-11-10 19:41
zcx8532
Rank: 1
等 级:新手上路
帖 子:60
专家分:0
注 册:2005-11-9
收藏
得分:0 
据我所知,要定义带默认参数值的函数,默认值只能在声明的时候出现,在实现的时候就不能出现了

2005-11-11 12:25
wdufo
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2005-9-15
收藏
得分:0 
谢谢
但是在第一种情况中
如果把main函数中的 Employee new_1; 和new_1.Display();
这两句去掉
就可以通过编译了
这是为什么呢?
2005-11-12 13:41
快速回复:[帮帮忙] 构造函数搞不清楚 :(
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024950 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved