构造函数数组

时间:2017-03-16 16:52:04

标签: c++ arrays constructor

我的构造函数有关于数组的问题!

在我的头文件中,我得到了这个(简化):

    class Student
  {  
        private:
                int am;
                char name[] ;
                int grades[8];
  }

在我的cpp文件中:

#include<iostream> 
#include<cstdlib> 
#include "Student.h"
using namespace std;

Student::Student()
{
}

Student::Student(int am , char name,int grades)
{
    this->am=am;
    this->name=name;
    this->grades=grades;
}

我收到此错误

[错误]将'char *'分配给'char [0]'不兼容的类型

P.S:我已经在这个网站上搜索了答案,但我是c ++的新手,无法弄明白。

2 个答案:

答案 0 :(得分:0)

将一个变量的值分配给另一个变量时,重要的是这些类型是兼容的。错误消息告诉您您正在尝试进行不兼容的分配。要弄清楚问题,请仔细查看变量的声明。类成员声明为

char name

但构造函数的参数声明为

char name[]

请注意,第一个是数组,但第二个是单个字符。解决当前错误的一种方法是更改​​参数声明以匹配成员字段:

std::string

但是,现在您将收到另一个错误,因为您无法将一个数组分配给另一个数组。相反,您必须一次复制一个角色。为了避免这种情况和其他并发症,我强烈建议您使用char[]代替php artisan make:auth()

答案 1 :(得分:0)

很明显你在做什么。你必须定义像

这样的名字
char name[20];

或者您应该在构造函数中为它分配内存,如:

name = new char [20];

如果您动态分配内存,请不要忘记将其删除