Мне удалось перегрузить оператор присваивания, поэтому у меня есть обходной путь для этого, но было бы неплохо узнать, почему я не смог заставить его работать.Копировать конструктор для 2d массива C++
Начало моего класса arr2d выглядит следующим образом:
template <class type> class arr2d {
private:
type* m_ptr;
int m_nx,m_ny;
public:
arr2d(){
m_ptr = 0;
m_nx = 0;
m_ny = 0;
}
// Default constructor creates a null array
arr2d(int nx, int ny):m_nx(nx),m_ny(ny){
m_ptr = new type [nx*ny];
if (m_ptr==0){cout << "\nError allocating heap memory.\n";}
}
// // Copy constructor
// arr2d(const arr2d& rhs){
// m_ptr = new type [m_nx*m_ny];
// for(int j=0;j<m_ny;j++){
// for(int i=0;i<m_nx;i++){
// m_ptr[j*m_nx+i] = rhs.m_ptr[j*m_nx+i];
// }
// }
// }
и так далее,
Вы можете видеть, что мой пытался конструктор копирования закомментирована там.
Сейчас в моем основных, я хотел бы вызвать конструктор копирования с использованием, например:
arr2d b=a;
Если массив б теперь имеет то же значение, как. Что я делаю неправильно?
Может быть не связано с вашей проблемой, но это всегда лучше следовать правилу Большого 3.http: //en.wikipedia.org/wiki/Rule_of_three_ (C++ _ программирование) –