| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 786 人关注过本帖
标题:哪位能手帮下
只看楼主 加入收藏
myth_feng
Rank: 2
等 级:论坛游民
威 望:1
帖 子:25
专家分:59
注 册:2010-8-11
收藏
得分:0 
#include <iostream>
#include<string>

using namespace std;

//Emp.h
using namespace std;
class CEmp
{
public:
    CEmp();
    virtual~CEmp(){delete[] name;}
    void set_name(char *);
        void set_age(short a){age=a;};
        void set_salary(float s){salary=s;};
        void print();

private: char *name;
         short age;
         float salary;
};
//Emp.cpp


CEmp::CEmp()
{
    name=0;
    age=0;
    salary=0;

}
void CEmp::set_name(char *n)
{
name=new char(strlen(n)+1);
strcpy(name,n);
}
void CEmp::print()
{
cout<<"Name:"<<name;
cout<<"Age:"<<age;
cout<<"Salary:"<<salary<<endl;
}

//text.cpp



int main(int argc,char* argv[])
{
    char *name=NULL;
    short age=0;
    float salary=0;
    name=new char[30];
    CEmp emp[3];
    for(int i=0;i<3;i++)
    {
        cout<<"输入第"<<i+1<<"员工的信息"<<endl;
        cout<<"姓名:";
        cin>>name;
        cout<<"年龄:";
        cin>>age;
        cout<<"工资:";
        cin>>salary;
        emp[i].set_name(name);
        emp[i].set_age(age);
        emp[i].set_salary(salary);
        emp[i].print();
    }
    system("Pause");
    return 0;
}
2010-10-12 18:07
yangang2
Rank: 6Rank: 6
等 级:侠之大者
威 望:1
帖 子:64
专家分:432
注 册:2010-9-1
收藏
得分:5 
除去以上他们说的错误外,你还犯了一个典型的错误,就是类的定义重复了。你的CEmp被定义了两次,难道你不知道吗?是的,它的确比较隐晦,不容易察觉。首先看你的Emp.cpp文件,找到第一个预定义处理#include"stdafx.h",编译时自然转到stdafx.h头文件中,它的内容是:
#include <iostream>
#include<string>
#include "Emp.h"
using namespace std;
特别注意#include "Emp.h",它又使其转到Emp.h头文件中,它的内容即是对CEmp类进行定义,定义完后编译using namespace std;然后就又自然转到Emp.cpp文件中,编译#include"stdafx.h"后的内容,它是什么?不巧它就是#include "Emp.h",编译器又转到Emp.h中,这就很明显了吧!CEmp确实定义了两次。

解决办法:
在Emp.h即类CEmp的定义文件中添加如下预定义宏:
#ifndef Emp_h
#define Emp_h
class CEmp()
{
......
};
#endif
程序就OK了

还提醒一下就是多个源文件.cpp进行编译时是分别独立编译的,如你的text.cpp与Emp.cpp独立编译,你的text.cpp没有错误,既然你说的是抄的书上的,我想你肯定是在Emp.cpp中抄多了那句#include "Emp.h"
我把我给你修改后的传上来
Test1.rar (925.46 KB)




[ 本帖最后由 yangang2 于 2010-10-12 18:55 编辑 ]
2010-10-12 18:52
m21wo
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:4
帖 子:440
专家分:1905
注 册:2010-9-23
收藏
得分:0 
就想我那么写不就ok 了!你怎么弄啊!

If You Want Something, Go Get It, Period.
2010-10-12 18:59
快速回复:哪位能手帮下
数据加载中...
 
   



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

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