2015-08-22 24 views
0

我需要添加一個構造函數,它接受一個int參數sz和一個大小爲sz的char數組。然後我需要構造函數將私有數據數組arr的第一個sz成員設置爲char的自變量數組的sz成員。將自定義數據數組賦值給自變量數組重載[]

這是我到目前爲止;我不知道如何調用該對象(即,CharPair (arr[ ], 10)。我試圖構建爲CharPair(char takearr[], int sz);是不是?如果這是正確的輸出應該是什麼?我得到AAAAAAAAA

#include <iostream> 
#include <cstdlib> 
using namespace std; 


class CharPair 
{ 
public: 
    CharPair(); 
    CharPair(int sz); 
    CharPair(char takearr[], int sz); 
    char& operator[](int index); 
    int getSize() const; 
private: 
    char arr[100]; 
    char size; 
}; 

int main() 
{ 
    char testarr[20] = "AAAAAAAAAAAAAAAAAAA"; 
    CharPair a ; 
    CharPair b (12) ; 
    CharPair c (testarr, 10) ; 
    //test data 
    a [ 1 ] = 'A' ; 
    a [ 2 ] = 'B' ; 
    cout << a [ 1 ] << endl ; 
    cout << a [ 2 ] << endl ; 
    for (int i = 0 ; i < 12 ; i++) 
     cout << b [ i ]; 
    cout << endl; 
    for (int i = 0 ; i < 10 ; i++) 
     cout << testarr [ i ]; 

    return 0; 
} 
char& CharPair::operator[](int index) 
{ 
    if (index >= size){ 
     cout << "Outta boundry" << endl; 
     exit(1); 
    } 
    return arr[index]; 
} 

CharPair::CharPair() : size(10) 
{ 
    for (int i = 0; i < size; i++) 
    { 
     arr[i] = '#'; 
    } 
} 

CharPair::CharPair(int sz) : size(sz) 
{ 
    if (sz >= 100){ 
     cout << "Outta boundry" << endl; 
     exit(1); 
    } 

    for (int i = 0; i < sz; i++) 
    { 
     arr[i] = '#'; 
    } 
} 
CharPair::CharPair(char takearr[], int sz) : size(sz) 
{ 
    if (sz >= 100){ 
     cout << "Outta boundry" << endl; 
     exit(1); 
    } 

    for (int i = 0; i < sz; i++) 
    { 
     takearr[i] = arr[i]; 
    } 
} 
int CharPair::getSize() const 
{ 
    return size; 
} 
+0

是什麼的問題是什麼呢? –

+0

我編輯了我的問題@AlexLop。 – newbiecoder

回答

0

分配是錯誤的:你分配未初始化的數據覆蓋好的。將其更改爲

CharPair::CharPair(char takearr[], int sz) : size(sz) 
{ 
    if (sz >= 100){ 
     cout << "Outta boundry" << endl; 
     exit(1); 
    } 

    for (int i = 0; i < sz; i++) 
    { 
     arr[i] = takearr[i]; // This is correct 
    } 
} 

輸出然後將

A 
B 
############ 
AAAAAAAAAA 
+0

私有數據數組arr到參數數組您的解決方案恰好相反 – newbiecoder

+0

此解決方案是正確的。 – Banex