2013-04-22 58 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标志)。这只是理解编译器的错误信息并知道如何解决问题的问题。