DynamicArray DynamicArray::operator+(const DynamicArray& rhs) const
{
int count = 0;
int tempCapcacity = mCapacity;
int newCapacity = mCapacity + rhs.mCapacity;
string *temp = allocateAndCopyToNewArray(mWords, mNumWords, newCapacity);
for (int i = tempCapcacity; i < newCapacity; i++)
{
temp[i] = rhs.mWords[count];
count++;
}
return *this;
}
试图让重载的运算符组合两个字符串数组。该函数必须是const,所以我无法更改成员数据。我怎样才能返回这个临时数组?
您可以改为使其成为非成员函数。所以它不一定是const。我不确定你的DynamicArray实现是如何工作的所以我将只使用std :: vector函数存根来表示我在想什么
template<typename T>
DynamicArray<T> operator + (const DynamicArray<T?& lhs, const DynamicArray<T>& rhs)
{
const uint prev_size = lhs.size();
DynamicArray result = lhs;
result.resize(result.size() + rhs.size()); // Let whatever internal resizing policy take over
memcpy(&result.data()[prev_size], rhs.data(), rhs.size() * sizeof(T));
return result;
}
基本上我在这里做的是我复制lhs,然后添加所需的元素以使列表能够以足够的空间复制,然后我在另一端的开头复制rhs数据。添加它们