c++中的问题

来源:百度知道 编辑:UC知道 时间:2024/06/06 15:54:17
我在VC++运行以下程序出错,先看程序:
#include<iostream>
#include<string>
using namespace std;
class teacher
{
public:
teacher(string nam,int a,string t)
{
name=nam;
age=a;
title=t;
}
void display()
{
cout<<"name:"<<name<<endl;
cout<<"age:"<<age<<endl;
cout<<"title:"<<title<<endl;
}
protected:
string name;
int age;
string title;
};
class student
{
public:
student(char nam[],char s,float sc)
{
strcpy(name1,nam);
sex=s;
score=sc;
}
void display1()
{
cout<<"name:"<<name1<<endl;
cout<<"sex:"<<sex<<endl;
cout<<"score:"<<score<<endl;
}
protected:
string name1;
char sex;
float score;

就象编译器报告的那样,strcpy不能将第一个参数从某个类类型转换为字符指针类型。标准C函数strcpy接收两个字符指针变量作为参数,完成字符串复制功能;而string为C++标准类类型(该类型在包含文件string中指定),在执行复制功能时,编译器无法将该类型的参数转换为字符串指针类型,如果强制转换也不能得到正确的结果。
使用类类型string,可以参考该类型提供的重载赋值操作符(=),可以将字符指针指向的字符串内容通过该操作符复制到类类型string的变量当中,比如将第29行改为:
name1 = nam;
就能达到你的要求了。

name1.append(nam)
参数3不能从const char转换为string

顶楼上的