2017-03-16 144 views
-2

我的數組構造函數有問題!構造函數數組

在我的頭文件中我得到這個(簡體):

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++中的新成員,無法弄清楚。

+4

如果您使用字符串,您應該使用'std :: string'。 – NathanOliver

+0

請注意,您已將該參數聲明爲'char name'。這只是一個字符。 –

+0

'char'是單個字符。你的學生真的只有一個名字? – Barmar

回答

0

這很明顯你在做什麼。 ü必須定義名稱,如

char name[20]; 

,或者你應該在你的構造類似分配內存:

name = new char [20]; 

如果動態分配內存,別忘了把它刪除

0

將一個變量的值分配給另一個變量時,重要的是這些類型是兼容的。該錯誤消息告訴您,您正在嘗試進行不兼容的分配。要弄清楚問題,仔細查看變量的聲明。類的成員被聲明爲

char name[] ; 

但參數給構造被聲明爲

char name 

注意,第一個是一個數組,但第二個單個字符。修復當前錯誤的一種方法是改變參數聲明的成員字段匹配:

char name[] 

不過,現在你會得到另一個錯誤,因爲你不能在一個數組賦值給另一個。相反,您將不得不逐個複製每個字符。爲了避免這種併發症,我強烈建議您使用std::string而不是char[]

0

謝謝對於快速回復,我想出了它!