2014-12-05 71 views
0
我有一個小問題...... 我有這樣的模板類

,它使一個二維數組:initializate模板對象

template <typename T, unsigned P> 

class mapa { 
private: 
    T **mat; 
    unsigned tam; 

public: 
    mapa(T &dato); 
    mapa(const mapa& orig); 
    virtual ~mapa(); 
    mapa<T, P> &operator=(const mapa<T, P> &orig); 
    T &operator()(unsigned i, unsigned j); 
}; 

template <class T, unsigned P> 
mapa<T, P>::mapa(T &dato) { 
    tam = P; 
    mat = new T**[tam]; 
    for (unsigned i = 0; i < P; i++) { 
     mat[i] = new T*[tam]; 
     for (unsigned j = 0; j < P; j++) { 
      mat[i][j] = dato; 
     } 
    } 
} 

template <class T, unsigned P> 
mapa<T, P>::~mapa() { 
    for (unsigned i = 0; i < tam; i++) { 
     delete mat[i]; 
    } 
    delete mat; 
} 

template <typename T, unsigned P> 
T &mapa<T, P>::operator()(unsigned i, unsigned j) { 
    /*if (i < 0 || i >= tam) { 
     throw ErrordeRango("Posición de memoria inexistente."); 
    } 
    if (j < 0 || j >= tam) { 
     throw ErrordeRango("Posición de memoria inexistente."); 
    } 
    if (k < 0 || k >= tam) { 
     throw ErrordeRango("Posición de memoria inexistente."); 
    } 
    return mat[i][j][k];*/ 

} 

template <typename T, unsigned P> 
mapa<T, P> &mapa<T, P>::operator=(const mapa<T, P> &orig) { 

    tam = orig.tam; 
    mat = new T**[tam]; 
    for (unsigned i = 0; i < P; i++) { 
     mat[i] = new T*[tam]; 
     for (unsigned j = 0; j < P; j++) { 
      mat[i][j] = orig[i][j]; 
     } 
    } 
    return mat; 
} 

我想在未來的類使用它:

class museo 
{ 
    int sizeStep; 
    mapa<objetoMuseo*, 50> mapaMuseo; 

public: 
    museo(); 
    ~museo(); 

    void visualizar(); 
}; 

我應該如何讓museo.cpp中的構造函數初始化模板對象?

回答

1

您可以使用初始化列表初始化您的字段。

museo::museo() 
: sizeStep(0), 
    mapaMuseo(???) 
{ 
} 

當然,之間的???您應該添加對objectoMuseo指針的引用,因爲這是構造函數所要求的。

+0

對不起,我又來了。我在做 objetoMuseo * vacio = NULL; mapaMuseo = new mapa(vacio); 但它是錯誤的= S – 2014-12-06 19:05:32

+0

請發佈完整的代碼示例來描述你正在嘗試做什麼,什麼不工作?遇到編譯/意外行爲? – 2014-12-08 12:04:30

+0

我修好了!問題出在這裏: mapaMuseo = new mapa(vacio); 它應該是: mapaMuseo = new mapa (vacio); 非常感謝! – 2014-12-09 17:28:36