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;
    }