在C ++中实例化私有字符串数组

时间:2012-05-06 01:19:53

标签: c++ arrays string private

在arraystorage类中声明,private: string *names;

ArrayStorage& ArrayStorage::operator=(const ArrayStorage& rhs)
{           
    // possible error
    names = new string[numOfElements];

    return *this;
}

//      copy constructor
ArrayStorage::ArrayStorage(const ArrayStorage& rhs):
                                 names(new string[numOfElements]),                                                      

                                 numOfElements(rhs.numOfElements)
{
    //names = new string[this->getNumOfElements()];

    for (int i = 0; i < this->getNumOfElements(); i++)
        names[i] = rhs.names[i];

}

ArrayStorage::~ArrayStorage(void)
{
    delete [] names;
}

================================ ArrayStorage.cpp ============ ==================

我的第一个问题,如果我将名称声明为私有,整件事情都行不通。如果我把它公之于众,它就有用了。

其次,如果我想将string *names声明为私有,请告知我如何使其有效?

1 个答案:

答案 0 :(得分:1)

使用类似std::vector<std::string>的RAII感知类并删除赋值运算符。

此外,您可能想要阅读三法则(如果您有析构函数,复制赋值运算符,复制构造函数;那么您应该拥有所有这些)。

(编辑:修改法律名称)