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中的構造函數初始化模板對象?
對不起,我又來了。我在做 objetoMuseo * vacio = NULL; mapaMuseo = new mapa(vacio); 但它是錯誤的= S – 2014-12-06 19:05:32
請發佈完整的代碼示例來描述你正在嘗試做什麼,什麼不工作?遇到編譯/意外行爲? – 2014-12-08 12:04:30
我修好了!問題出在這裏: mapaMuseo = new mapa(vacio); 它應該是: mapaMuseo = new mapa(vacio); 非常感謝! –
2014-12-09 17:28:36