在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
声明为私有,请告知我如何使其有效?
答案 0 :(得分:1)
使用类似std::vector<std::string>
的RAII感知类并删除赋值运算符。
此外,您可能想要阅读三法则(如果您有析构函数,复制赋值运算符,复制构造函数;那么您应该拥有所有这些)。
(编辑:修改法律名称)