Ваша pp
память - это необработанный массив в стиле C, содержащий 2 указателя. Вы не можете назначить необработанный массив непосредственно другому необработанному массиву. Вам необходимо скопировать отдельные элементы из одного массива в другой, например:
Picture_Pair::Picture_Pair(const Picture_Pair& src)
{
pp[0] = src.pp[0];
pp[1] = src.pp[1];
}
Или:
Picture_Pair::Picture_Pair(const Picture_Pair& src)
{
for(int i = 0; i < 2; ++i)
pp[i] = src.pp[i];
}
Или:
#include <algorithm>
Picture_Pair::Picture_Pair(const Picture_Pair& src)
{
std::copy(src.pp, src.pp+2, pp);
}
Или:
#include <algorithm>
Picture_Pair::Picture_Pair(const Picture_Pair& src)
{
std::copy_n(src.pp, 2, pp);
}
Однако на самом деле вам не нужно определять конструктор копирования или оператор присваивания для вашего Picture_Pair
класса, реализации по умолчанию будет достаточно для мелкого копирования массива:
class Picture_Pair
{
private:
Picture* pp[2]{nullptr, nullptr};
...
public:
...
Picture_Pair(const Picture_Pair&) = default;
...
Picture_Pair& operator=(const Picture_Pair&) = default;
...
};
Хотя вы явно используете C ++ 11 или более позднюю версию, поэтому вам следует рассмотреть возможность использования std::array
в стиле C ++ вместо необработанного массива в стиле C:
#include <array>
class Picture_Pair
{
private:
std::array<Picture*, 2> pp{nullptr, nullptr};
...
public:
...
Picture_Pair(const Picture_Pair&) = default;
...
Picture_Pair& operator=(const Picture_Pair&) = default;
...
};