0
我已經設法重載賦值運算符,所以我對此有一個解決方法,但很高興知道爲什麼我無法使它工作。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;
,其中B陣列目前擁有相同的價值觀作爲。我做錯了什麼?
也許不相關的問題,但它始終是更好地遵循大3.http的規則://en.wikipedia.org/wiki/Rule_of_three_(C++編程_) –