运行出错-C++程序,出现以下错误是咋回事?

问题描述

C++程序,出现以下错误是咋回事?

//StringClass.hCSDN移动问答

#include
#include
using namespace std;
?
class String
{
char* str;
public:
String() {str=NULL;}
String(const char* p)
{
str=new char[strlen(p)+1];
strcpy(str, p);
}
String(const String& s)
{
str=new char[strlen(s.str)+1];
strcpy(str, s.str);
}
~String()
{
delete []str;
str=NULL;
}

//取字符串长度
int length() const {return strlen(str); }

//取字符串第i位的引用
char& operator
{
if(i=(int)(strlen(str)))
{
cerr<<"超出字符串范围!n";
exit(-1);
}
return str[i];
}

//用于常量对象
char operator const
{
if(i<0 || (int)(strlen(str)))
{
cerr<<"超出字符串范围!n";
exit(-1);
}
return str[i];
}

//返回字符串指针
operator char* () const {return str; }

//拷贝字符串
String& operator=(const char *p)
{
char *p1=new char[strlen(p)+1]; //申请资源
strcpy(p1, p);
delete []str;
str=p1;
cout<<"Const char"<<endl;
return *this;
}

String& operator=(const String& s)
{
if(this==&s) return *this;
*this=s.str;
cout<<"String="<<endl;
return *this;
}

//拼接字符串
String& operator+=(char* p)
{
char* p1=new char[strlen(str)+strlen(p)+1];
strcpy(p1, str);
strcat(p1, p);
delete []str;
str=p1;
return *this;
}

String& operator+=(const String& s)
{
*this+=s.str;
return *this;
}

//比较两个字符串
friend bool operator==(const String &s1, const String &s2);
friend bool operator==(const String &s, const char* p);
friend bool operator==(const char *p, const String &s);
friend ostream& operator<<(ostream& os, const String &s);
};

bool operator==(const String& s1, const String& s2)
{
return (strcmp(s1.str, s2.str)==0);
}

bool operator==(const String& s, const char* p)
{
return (strcmp(s.str, p)==0);
}

bool operator==(const char* p, const String& s)
{
return (strcmp(p, s.str)==0);
}

ostream& operator<<(ostream& os, const String& s)
{
os<<s.str<<endl;
return os;
}

String operator+(const String& s1, const String& s2)
{
String temp(s1);
temp+=s2;
return temp;
}

String operator+(const String& s, const char* p)
{
String temp(s);
temp+=p;
return temp;
}

String operator+(const char* p, const String &s)
{
String temp(p);
temp+=s;
return temp;
}

//Employer.cpp

#include "StringClass.h"
#include
#include
using namespace std;

class Employee //普通职员类
{
String name; //String为例7.7中定义的字符串类
int salary;
public:
Employee(const char *s, int n=0):name(s){ salary=n; }
void set_salary(int n) { salary=n; }
int get_salary() const {return salary; }
String get_name() const {return name;}
friend ostream& operator<<(ostream& os, const Employee& e);
};

ostream& operator<<(ostream& os, const Employee& e)
{
os<<"Name is:"<<e.name<<"Salary is:"<<e.salary<<endl;
return os;
}
const int MAX_NUM_OF_EMPS=20;

class Manager: public Employee //部门经理类
{
Employee *group[MAX_NUM_OF_EMPS];
int num_of_emps;
public:
Manager(const char *s, int n=0): Employee(s,n) {num_of_emps=0;}
Employee *add_employee(Employee *e)
{
if(num_of_emps>=MAX_NUM_OF_EMPS) return NULL;
group[num_of_emps]=e;
num_of_emps++;
return e;
}
Employee *remove_employee(Employee *e)
{
int i;
for(i=0; i
if(e->get_name()==group[i]->get_name())
break;
if(i<num_of_emps)
{
for(int j=i+1; j<num_of_emps; j++)
group[j-1]=group[j];
num_of_emps--;
return e;
}
else
return NULL;
}

const Employee *SearchEmployeeOfHighSalary()
{
// int highsalary=group[0]->get_salary();
int pos=0;
for(int i=1; i
if(group[pos]->get_salary()get_salary())
{
// highsalary=group[i]->get_salary();
pos=i;
}
return group[pos];
}

~Manager()
{
for(int i=0; i<num_of_emps; i++)
if(group[i]!=NULL)
delete group[i];

// delete []group;

}

friend ostream& operator<<(ostream& os, const Manager& m);
};

ostream& operator<<(ostream& os, const Manager& m)
{
// os<<m.name<<m.salary

os<<(Employee)m;
int i;
for(i=0; i<m.num_of_emps; i++)
os<<*(m.group[i]);
return os;
}

int main()
{
Employee e1("Jack", 1000), e2("Jane", 2000), e3("John", 3000);
Manager m("Mark",4000);
m.add_employee(&e1);
m.add_employee(&e2);
m.add_employee(&e3);

cout<<"List Employee Before"<<endl;
cout<<m<<endl;

cout<<endl;
cout<<"Employee of High Salary is:"<<endl;
cout<<*(m.SearchEmployeeOfHighSalary());

m.remove_employee(&e2);

cout<<endl;
cout<<"List Employee After"<<endl;
cout<<m<<endl;
return 0;
}

解决方案

我的浏览器代码有时看不全,但是if(i=(int)(strlen(str)))应该是你写错了。

时间: 2025-01-19 09:40:26

运行出错-C++程序,出现以下错误是咋回事?的相关文章

[求助]mac下装gdb,制作好了证书,但是运行的时候出现下面的错误是怎么回事?

问题描述 [求助]mac下装gdb,制作好了证书,但是运行的时候出现下面的错误是怎么回事? (gdb) r Starting program: /Users/wangxiaoxiao/Desktop/oj/a.out warning: `/Users/admin/build/x86_64-apple-darwin15.0.0/libstdc++-v3/src/.libs/compatibility-atomic-c++0x.o': can't open to read symbols: No s

安卓 运行 出错-安卓程序一运行项目就报错

问题描述 安卓程序一运行项目就报错 如题,错误提示:your project contains error(s),please fix them before running your appliction 我以为是版本问题,但是我查看project.properties里面的target=android-10 右键工程后,看安卓版本也是2.3.3没问题啊,希望有人指点迷津 在线等 解决方案 可以先clean下工程试试,如不行就要尝试找到具体是哪个文件出问题了,虽然工程图标没有小红叉,很可能要打

运行出错-c程序冒泡排序,vc编译没错,但运行不了,不知道怎么回事。代码如下:

问题描述 c程序冒泡排序,vc编译没错,但运行不了,不知道怎么回事.代码如下: #include #define TRUE 1 #define FALSE 0 void bubble(int a[],int length) { int i=1,j,temp; int change; do{ change=FALSE; for(j=0;j if(a[j]>a[j+1]) { temp=a[j+1]; a[j+1]=a[j]; a[j]=temp; change=TRUE; } i+=i; }whi

c-大神们!这个程序在没有错误,能运行,为什么一到蓝桥杯提交时间就会显示编译错误的?

问题描述 大神们!这个程序在没有错误,能运行,为什么一到蓝桥杯提交时间就会显示编译错误的? . 评测结果 编译出错 得分 0 CPU使用 编译出错 内存使用 编译出错 试题名称 算法训练 P1103 语言 C 源代码 #include #include #include struct fushu{ double real; double i; }; fushu* add(fushu a, fushu b){ fushu* ret = (fushu*)malloc(sizeof(fushu));

linux 并行-Linux下MPI+OpenMP程序编译运行出错

问题描述 Linux下MPI+OpenMP程序编译运行出错 如题,错误提示如下: [node65:03787] *** Process received signal *** [node65:03787] Signal: Segmentation fault (11) [node65:03787] Signal code: Address not mapped (1) [node65:03787] Failing at address: 0x44000098 [node65:03787] [ 0

mfc-请教一个MFC程序运行出错的问题

问题描述 请教一个MFC程序运行出错的问题 void CMainFrame::OnTimer(UINT_PTR nIDEvent) { // TODO: 在此添加消息处理程序代码和/或调用默认值 CTime time; struct tm* osTime; time = CTime::GetCurrentTime(); osTime = time.GetLocalTm(NULL); m_strTime.Format("%2d:%2d:%2d:",osTime->tm_hour,o

mfc-MFC程序中调用ShellExecute()运行出错

问题描述 MFC程序中调用ShellExecute()运行出错 请问一下,我在一个MFC程序中调用ShellExecute()打开另一个exe,可以打开,但是出现 access violation at address in module错误,请问大家遇到过这种情况吗,怎么解决? PS:ShellExecute()返回42,成功.调用的程序显示 access violation at address in module,Thread Eerror:拒绝访问 解决方案 我知道是怎么回事了,配置文件

Java代码没有语法错误,但运行出错

问题描述 Java代码没有语法错误,但运行出错 以下这段代码没有提示语法错误,却在运行时报错,求大神指教import java.io.*;import java.net.*;public class Ser{ public static void main(String args[]){ ServerSocket server = null; Socket you = null;String s = null; DataOutputStream out = null; DataInputStre

after-一个简单的C++程序,改变while循环的进入条件顺序后运行出错。

问题描述 一个简单的C++程序,改变while循环的进入条件顺序后运行出错. void func(forward_list &lst string s1 string s2){ auto current = lst.begin(); auto prev = lst.begin(); cout << *prev << endl; while (*current != s1 && current != lst.end()) { prev = current++;