<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>

<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
</head>
<body text="#000000" bgcolor="#ffffff">
Hola a tod@s,<br>
<br>
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.<br>
<br>
Mi problema es el siguiente, tengo que hacer un ejercicio cuyo
enunciado es el siguiente:<br>
<br>
<small><i>Como ejercicio, debéis crear la clase Matrix. La clase matrix
será una plantilla. Tendrá los siguientes metodos:<br>
    a) <b>Constructor vacío</b>.<br>
    b) <b>Constructor de copia</b>.<br>
    c) <b>Constructor parametrizado</b>. Recibe dos enteros sin signo,
número de filas (nRows) y número de columnas (nCols).<br>
    d) <b>resize(unsigned int nRows, unsigned int nCols)</b>. 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.<br>
    e) <b>unsigned int getNRows()</b>. Indica el numero de filas.<br>
    f) <b>unsigned int getNCols()</b>. Indica el numero de columnas.<br>
    g) <b>Type & get(unsigned int r, unsigned int c)</b>. 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.<br>
    h) <b>void setIdentity()</b>. 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.<br>
    i) <b>Operador de asignación</b>.<br>
    j) <b>Operador de suma</b>. 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.<br>
    k) <b>Destructor</b>.</i></small><br>
<br>
Adjunto se puede encontrar los dos archivos fuente: <i>matrix.h</i> y <i>main.cpp</i>
que he realizado como solución.<br>
<br>
El problema es que al compilar me da el siguiente error:<br>
<br>
<small><i>$ g++ -I. -g3 main.cpp -o matrix<br>
<br>
In file included from main.cpp:8:<br>
matrix.h: In copy constructor
‘storage::Matrix<Type>::Matrix(const
storage::Matrix<Type>&) [with Type = float]’:<br>
main.cpp:34:   instantiated from here<br>
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<br>
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<br>
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<br>
matrix.h: In member function ‘storage::Matrix<Type>
storage::Matrix<Type>::operator+(const
storage::Matrix<Type>&) [with Type = float]’:<br>
main.cpp:40:   instantiated from here<br>
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<br>
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<br>
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<br>
matrix.h: In member function ‘storage::Matrix<Type>&
storage::Matrix<Type>::operator=(const
storage::Matrix<Type>&) [with Type = float]’:<br>
main.cpp:40:   instantiated from here<br>
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<br>
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<br>
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</i></small><big><br>
<br>
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.<br>
<br>
Un saludo y muchas gracias por adelantado. </big><br>
</body>
</html>