使用两个数组c ++重载Operator +

问题描述 投票:1回答:1
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,所以我无法更改成员数据。我怎样才能返回这个临时数组?

arrays c++11 operator-overloading this
1个回答
0
投票

您可以改为使其成为非成员函数。所以它不一定是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数据。添加它们

© www.soinside.com 2019 - 2024. All rights reserved.