2013-04-22 95 views
0

所以,我是C++(全新)的新手,作爲一項任務,我必須編寫一個充當數組包裝器的類。由於我太新了,我不確定我是否超負荷運營商和這樣的工作,所以如果有人能這麼好心地告訴我,我的代碼的外觀:C++中的數組包裝類

這將是頭:

class MyArray 
{ 

private: 
    string* sList; 
    unsigned int size; 

public: 
    MyArray(const unsigned int size = 1); 
    MyArray(const MyArray &toCopy); 
    MyArray& operator=(const MyArray& toAssign); 
    ~MyArray(); 
    //MyArray& operator+ 
    string& operator[](const int index); 
    const int size(); 
}; 

,這將是底層的代碼:

MyArray::MyArray(const unsigned int initSize) 
    : size(initSize) 
{ 
    sList = new string[initSize]; 
    return; 
} 

MyArray::MyArray(const MyArray &toCopy) 
    : size(toCopy.size) 
{ 
    if(toCopy.sList) 
    { 
     sList = new string[size]; 
     for(int a=0; a<size; a++){ 
      strcpy(sList[a], toCopy.sList[a]); 
     } 

    } 
    else sList = NULL; 
    return; 

} 

MyArray& operator=(const MyArray& toAssign) 
{ 
    if(this != &toAssign) 
    { 
     if(sList) 
     { 
      delete [] sList; 
     } 

     size = toAssign.size; 

     if (toAssign.sList) 
     { 
      sList = new string[size]; 

      for(int a=0; a<size; a++){ 
       strcpy(sList[a], toCopy.sList[a]); 
      } 
     } 
     else 
     { 
      sList = NULL 
     } 
    } 
} 

MyArray::~MyArray() 
{ 
    delete [] sList; 
    return; 
} 

string& MyArray::operator[](const int index) 
{ 
    return sList[index]; 
} 


const int MyArray::size() 
{ 
    return this.size; 
} 

運營商+功能仍然需要寫的,但我要確保我有什麼有意義我再繼續。

+1

你也許應該測試,並尋求幫助,讓您知道具體是什麼,我們可以幫助您與之前運行了幾次。 – 2013-04-22 23:28:10

+2

將你的要求寫成單元測試,然後你會知道你的操作員是否工作。 – 2013-04-22 23:28:39

+0

使用調試器進行分步 - 您將看到它的工作原理。 – Rob 2013-04-22 23:30:07

回答

1

你想如何讓你的代碼(即你正在創作的類)被其他程序員(包括你)使用?

編寫一個示例程序來演示您的班級使用情況。

一個示例程序作爲一個基本的測試集。您可以從以下開始。

int main() { 
    MyArray arr1(5); 
    MyArray arr2(arr1); 
} 

你有沒有想過用戶代碼將如何把(字符串?)元素融入類?

當前版本的代碼還有其他一些問題。首先,這是可以的,但是學習測試自己的代碼對你來說很重要;你需要學習你對自己的代碼有一些基本信心的技能(不一定是完美的代碼),因爲你不能總是要求別人來測試你的代碼。

建議:既然你提到你是新手,我會建議你爲int創建一個數組包裝類。這是因爲,與管理int s相比,管理string有一些額外的挑戰:-)。一旦你這樣做,你可以很容易地做到這一點string s。

1
  • sizesize()
  • 複製C++串之間使用=,不strcpy(其是用於char*
  • toCopy應該在operator=toAssign命名衝突中的operator=定義缺少MyArray::
  • 缺失分號後sList = NULL
  • operator=
  • size()確定指標月底失蹤return *this;this.sizesizethis->size(*this).size

所有這些錯誤都會由編譯器發現的(你可能需要啓用的警告報告缺失的回報;在g++上使用-Wall標誌)。這只是理解編譯器的錯誤信息並知道如何解決問題的問題。