这个程序编译没错误 运行的时候提示错误而不能运行

ljm19891118 2009-11-30 08:34:50
下面是3个代码组合成了一个程序
编译没错
运行报错
不知道为什么
大家帮忙看看
其实定义一个类没什么用
但是老师要求了
就当个摆设
直接调用函数了

文件peidui.h

class peidui
{
private:
char *name;
char *sex;
public:
peidui(char *name1,char *sex1);
void zhu();
~peidui();

};


文件peidui.cpp


#include<string.h>
#include<iostream.h>
#include"peidui.h"
peidui::peidui(char *name1,char *sex1)
{
name=new char[strlen(name1)+1];
strcpy(name,name1);
sex=new char[strlen(sex1)+1];
strcpy(sex,sex1);

}
void peidui::zhu()
{
char man[100][10],woman[100][10];
int i,j,k,m,flag;
char *a,*b;
i=j=0;
k=1;
cout<<"请输入舞会人的总数:";
cin>>flag;
for( m=0;m <100;m++)
{
strcpy(man[m],"null");
strcpy(woman[m],"null");
}

while(flag!=0)
{ cout<<"请输入舞会的姓名和性别:";
cin>>a>>b;
if(strcmp(b,"nan")&&strcmp(b,"nv"))
{
cout<<"性别输入错误,请重新输入性别";
cin>>b;
}
if(strcmp(b,"nan"))
{
strcpy(man[i],a);
i++;
}
else if(strcmp(b,"nv"))
{
strcpy(woman[j],a);
j++;
}

flag--;

}
while(strcmp(man[k-1],"null")&&strcmp(woman[k-1],"null"))
{
cout<<"第"<<k<<"组舞伴,男: "<<man[k-1]<<" 女: "<<woman[k-1];
k++;
}
}

peidui::~peidui()
{
delete[]name;
delete[]sex;

}



文件main.cpp

#include<iostream.h>
#include"peidui.cpp"
void main()
{
peidui people("lijineng","nan");
people.zhu();

}


...全文
79 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
JecenFan 2009-11-30
  • 打赏
  • 举报
回复
不知道楼主用的是什么编译器,我用的是 visual studio 2008 可以编译 就是里面有 警告 没有错误 可以运行出正确的结果。
huajia136651 2009-11-30
  • 打赏
  • 举报
回复
在VC++下创建win32控制台程序创建的Project然后把代码拷进去试试,这样就OK了
ljm19891118 2009-11-30
  • 打赏
  • 举报
回复
谢谢了
改正了
确实是4楼说的问题
不小心把析构函数注释了
以后不会犯这种小错误了
ljm19891118 2009-11-30
  • 打赏
  • 举报
回复
按照4楼的方法
提示的错误变了


--------------------Configuration: peidui - Win32 Debug--------------------
Linking...
main.obj : error LNK2001: unresolved external symbol "public: __thiscall peidui::~peidui(void)" (??1peidui@@QAE@XZ)
Debug/peidui.exe : fatal error LNK1120: 1 unresolved externals
执行 link.exe 时出错.

peidui.exe - 1 error(s), 0 warning(s)
mstlq 2009-11-30
  • 打赏
  • 举报
回复
main.cpp里面
#include"peidui.cpp"改成#include"peidui.h"

include *.cpp是非常业余的表现,希望楼主以后注意……
ljm19891118 2009-11-30
  • 打赏
  • 举报
回复
按照楼上的方法改了
还是报一样的错

提示
--------------------Configuration: peidui - Win32 Debug--------------------
Linking...
main.obj : error LNK2005: "public: __thiscall peidui::peidui(char *,char *)" (??0peidui@@QAE@PAD0@Z) already defined in peidui.obj
main.obj : error LNK2005: "public: void __thiscall peidui::zhu(void)" (?zhu@peidui@@QAEXXZ) already defined in peidui.obj
main.obj : error LNK2005: "public: __thiscall peidui::~peidui(void)" (??1peidui@@QAE@XZ) already defined in peidui.obj
Debug/peidui.exe : fatal error LNK1169: one or more multiply defined symbols found
执行 link.exe 时出错.
kouwenlong 2009-11-30
  • 打赏
  • 举报
回复
char *a,*b;
改成 char a[10],b[5];
mstlq 2009-11-30
  • 打赏
  • 举报
回复

void peidui::zhu()
{
char man[100][10],woman[100][10];
int i,j,k,m,flag;
char a[256],b[256]; //mark
i=j=0;
k=1;
cout<<"请输入舞会人的总数:";
cin>>flag;
for( m=0;m <100;m++)
{
strcpy(man[m],"null");
strcpy(woman[m],"null");
}

while(flag!=0)
{ cout<<"请输入舞会的姓名和性别:";
cin>>a>>b; //原来没给a和b分配内存,挂了……
if(strcmp(b,"nan")&&strcmp(b,"nv"))
{
cout<<"性别输入错误,请重新输入性别";
cin>>b;
}
if(strcmp(b,"nan"))
{
strcpy(man[i],a);
i++;
}
else if(strcmp(b,"nv"))
{
strcpy(woman[j],a);
j++;
}

flag--;

}
while(strcmp(man[k-1],"null")&&strcmp(woman[k-1],"null"))
{
cout<<"第"<<k<<"组舞伴,男: "<<man[k-1]<<" 女: "<<woman[k-1];
k++;
}
}

69,377

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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