2011-04-14 53 views
-2

比方說,我有以下幾點:通過字符數組來函數C++

char cipan[9]; 

那麼我應該傳遞給函數? get和set方法怎麼樣?

目前,我正在做這樣的

一套方法

void setCipan(char cipan[]){ 

this->cipan = cipan; 
} 

和get方法

char getCipan(){ 
return cipan; 
} 

和編譯時,我得到一個錯誤?

Im完全模糊..有人可以解釋我應該傳遞給函數嗎?

class userData{ 
private: 
    string name; 
    char dateCreate[9]; 

    void userDataInput(string name,char dateCreate[]){ 
     this->name = name; 
     this->dateCreate = dateCreate; 

    } 
public: 
    //constructor 
    userData(string name){ 
     userDataInput(name,dateCreate); 
    } 
    userData(string name,char dateCreate[]){ 
     userDataInput(name,dateCreate); 
    } 
    //mutator methods 
    void changeName(string name){this->name = name;} 
    void changeDateCreate(char *dateCreate){this->dateCreate = dateCreate;} 
    //accesor methods 
    string getName(){return name;} 
    char *getDateCreate(){return dateCreate;} 


}; 
+0

正確粘貼完整的代碼。 – Sadique 2011-04-14 15:55:41

+3

請參閱http://stackoverflow.com/questions/4810664/how-do-i-use-arrays-in-c – AProgrammer 2011-04-14 15:56:42

+0

什麼是「功能」,什麼是「錯誤?」 – 2011-04-14 15:57:04

回答

1

我會做到以下幾點:

void setCipan(const char* new_cipan) 
{ 
    strcpy(cipan, new_cipan); 
} 

const char* getCipan() const 
{ 
    return cipan; 
} 

當然,更好的辦法是使用std::string

void setCipan(const string& new_cipan) 
{ 
    cipan = new_cipan; 
} 

string getCipan() const 
{ 
    return cipan; 
} 
1
  • 構造的目的是初始化類變量。我認爲沒有必要在構造函數中調用另一個方法來進行初始化。


void userDataInput(string name,char dateCreate[]){ 
    this->name = name; 
    this->dateCreate = dateCreate; // Both the dateCreate are class variables. 
} 

userData(string name){ 
    userDataInput(name,dateCreate); // dateCreate is already a class variable. 
} 

dateCreate是類範圍可變。您只是將它傳遞給一個方法,並將其重新分配給dateCreate。賦值操作不會將一個數組的元素複製到另一個數組,並且是無效操作。

要複製數組元素,請改爲使用std::copy