C++ 字符类型转换不兼容
一个基于构造函数的程序C++ 字符类型转换不兼容,c++,constructor,char,type-conversion,C++,Constructor,Char,Type Conversion,一个基于构造函数的程序 Error -Incompatible Type conversion from char to char[100] 代码- #include<iostream> using namespace std; class demo { public: char name[100]; //This is where char is declared int marks;
Error -Incompatible Type conversion from char to char[100]
代码-
#include<iostream>
using namespace std;
class demo
{
public:
char name[100];
//This is where char is declared
int marks;
demo()
{
marks = 0;
name = "Pro";
//assigning value to the char
cout<<"Working"<<endl;
}
void input()
{
cout<<"Enter Name and Marks"<<endl;
cin>>name>>marks;
}
void output()
{
cout<<name<<"\t"<<marks<<endl;
}
};
数组没有复制分配运算符 所以这个语句在构造函数中
name = "Pro";
这是错误的
你必须写作
#include <cstring>
//...
std::strcpy( name, "Pro" );
#包括
//...
std::strcpy(名称,“Pro”);
或者一个更简单的方法就是像这样重写构造函数
demo() : name { "Pro" }, mark( 1 )
{
cout<<"Working"<<endl;
}
demo():名称{“Pro”},标记(1)
{
你为什么不使用std::string
?那么它就可以完美地工作了。我们还没有学过它,但我会马上用谷歌搜索它。你需要了解char
(单个字符)和char
数组(由多个字符组成)之间的区别因此,它们在逻辑上不能相互分配。该语言根本不允许直接分配给数组-必须逐个复制元素。因此,我将其输入为name={“P”,“R”};?因为您使用的是char
的原始数组,而不是使用std::string
,请查找函数strcpy()在C++头中,代码> >代码>或C头(C++支持向后兼容,即使是不兼容的)<代码> <代码>。
demo() : name { "Pro" }, mark( 1 )
{
cout<<"Working"<<endl;
}