[C con Clase] Problema creacion de clase matriz con plantilla en C++

Jose Cabrera josmaca en gmail.com
Sab Dic 26 23:29:17 CET 2009


Yo tengo por algun lado una clase parecida pero ahora no la encuentro, de
todas formas intenta poner lo siguiente a ver si soluciona el problema

return this._nRows;




El 26 de diciembre de 2009 18:23, Rafael Enriquez Herrador <
rafenher07 en gmail.com> escribió:

>  Hola a tod en s,
>
> Esta es la primera vez que escribo a la lista, por lo tanto me gustaría dar
> la enhorabuena a todos aquellos/as que intervienen en ella de cualquier
> forma.
>
> Mi problema es el siguiente, tengo que hacer un ejercicio cuyo enunciado es
> el siguiente:
>
> *Como ejercicio, debéis crear la clase Matrix. La clase matrix será una
> plantilla. Tendrá los siguientes metodos:
>     a) Constructor vacío.
>     b) Constructor de copia.
>     c) Constructor parametrizado. Recibe dos enteros sin signo, número de
> filas (nRows) y número de columnas (nCols).
>     d) resize(unsigned int nRows, unsigned int nCols). Función que cambia
> el tamaño de la matriz. Esta función recibe dos enteros sin signo (nRows y
> nCols). Os aconsejo que no repitais el código y que el constructor
> parametrizado llame a esta función.
>     e) unsigned int getNRows(). Indica el numero de filas.
>     f) unsigned int getNCols(). Indica el numero de columnas.
>     g) Type & get(unsigned int r, unsigned int c). Función de acceso que
> retorna el elemento (r,c) de la matriz. En este caso, no podremos usar el
> operador []. Llamaremos a esta función. La función comprobará si el elemento
> existe. En caso negativo aborta el programa.
>     h) void setIdentity(). Esta función hace que la matriz sea la
> identidad, es decir, todo a cero excepto los elementos de la diagonal
> principal que estarán a uno.
>     i) Operador de asignación.
>     j) Operador de suma. Realiza la suma de dos matrices y retorna el
> resultado. La función se encargará de comprobar que es posible realizar la
> operación. En caso de no ser posible se abortará el programa.
>     k) Destructor.*
>
> Adjunto se puede encontrar los dos archivos fuente: *matrix.h* y *main.cpp
> * que he realizado como solución.
>
> El problema es que al compilar me da el siguiente error:
>
> *$ g++ -I. -g3 main.cpp -o matrix
>
> In file included from main.cpp:8:
> matrix.h: In copy constructor ‘storage::Matrix<Type>::Matrix(const
> storage::Matrix<Type>&) [with Type = float]’:
> main.cpp:34:   instantiated from here
> matrix.h:89: error: pasar ‘const storage::Matrix<float>’ como el argumento
> ‘this’ de ‘unsigned int storage::Matrix<Type>::getNRows() [with Type =
> float]’ descarta a los calificadores
> matrix.h:90: error: pasar ‘const storage::Matrix<float>’ como el argumento
> ‘this’ de ‘unsigned int storage::Matrix<Type>::getNCols() [with Type =
> float]’ descarta a los calificadores
> matrix.h:98: error: pasar ‘const storage::Matrix<float>’ como el argumento
> ‘this’ de ‘Type& storage::Matrix<Type>::get(unsigned int, unsigned int)
> [with Type = float]’ descarta a los calificadores
> matrix.h: In member function ‘storage::Matrix<Type>
> storage::Matrix<Type>::operator+(const storage::Matrix<Type>&) [with Type =
> float]’:
> main.cpp:40:   instantiated from here
> matrix.h:218: error: pasar ‘const storage::Matrix<float>’ como el argumento
> ‘this’ de ‘unsigned int storage::Matrix<Type>::getNCols() [with Type =
> float]’ descarta a los calificadores
> matrix.h:218: error: pasar ‘const storage::Matrix<float>’ como el argumento
> ‘this’ de ‘unsigned int storage::Matrix<Type>::getNRows() [with Type =
> float]’ descarta a los calificadores
> matrix.h:224: error: pasar ‘const storage::Matrix<float>’ como el argumento
> ‘this’ de ‘Type& storage::Matrix<Type>::get(unsigned int, unsigned int)
> [with Type = float]’ descarta a los calificadores
> matrix.h: In member function ‘storage::Matrix<Type>&
> storage::Matrix<Type>::operator=(const storage::Matrix<Type>&) [with Type =
> float]’:
> main.cpp:40:   instantiated from here
> matrix.h:195: error: pasar ‘const storage::Matrix<float>’ como el argumento
> ‘this’ de ‘unsigned int storage::Matrix<Type>::getNRows() [with Type =
> float]’ descarta a los calificadores
> matrix.h:196: error: pasar ‘const storage::Matrix<float>’ como el argumento
> ‘this’ de ‘unsigned int storage::Matrix<Type>::getNCols() [with Type =
> float]’ descarta a los calificadores
> matrix.h:206: error: pasar ‘const storage::Matrix<float>’ como el argumento
> ‘this’ de ‘Type& storage::Matrix<Type>::get(unsigned int, unsigned int)
> [with Type = float]’ descarta a los calificadores*
>
> La verdad es que estoy totalmente bloqueado ya que soy nuevo en esto de la
> programación de clases con plantillas en C++. Agradecería muchísimo si
> alguien pudiese orientarme de dónde puede estar el fallo y a que puede
> deberse.
>
> Un saludo y muchas gracias por adelantado.
>
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20091226/a81937df/attachment.html>


Más información sobre la lista de distribución Cconclase