Hola. Veo 2 errores:
1. en la linea:
Código:
QString text = personas_tabla[row][col];
la variable
personas_tabla no existe. Supongo que es
tabla.
2. Si tabla es un array (de 2 dimensiones) de char*, eso no vale:
porque tabla[0][0] (0,0 o lo que sea) est un char*, pero '1' est un char.
Tienes que escribir:
Porque "1" es un char*.
Pero eso:
Código:
char* tabla [HEIGHT][WIDTH];
es C, no es C++.
En c++, en vez de eso, utilizamos los contenedores de la STL.
Aqui tienes un ejemplo de buena manera de hacer en c++: un objeto Dyn2dMatrix (matriz dinamica de 2 dimensiones)
Código:
#ifndef __H_DYN_2D_MATRIX_H__
#define __H_DYN_2D_MATRIX_H__
#include <vector>
#include <string>
#include <algorithm>
template <typename T>
class Dyn2dMatrix
{
public:
//! contructor
Dyn2dMatrix(const size_t nbRow = 0, const size_t nbCol = 0)
: m_nbRow(nbRow)
, m_nbCol(nbCol)
, m_array(nbRow*nbCol)
{}
//! copy constructor
Dyn2dMatrix( const Dyn2dMatrix<T> & matrix )
: m_nbRow( matrix.m_nbRow )
, m_nbCol( matrix.m_nbCol )
, m_array( std::vector<T>( matrix.Size() ) )
{
std::copy( matrix.m_array.begin(), matrix.m_array.end(), m_array.begin() );
}
//! assignment operator
void operator = ( const Dyn2dMatrix & matrix )
{
m_nbRow = matrix.m_nbRow;
m_nbCol = matrix.m_nbCol;
m_array = std::vector<T>( matrix.Size() );
std::copy( matrix.m_array.begin(), matrix.m_array.end(), m_array.begin() );
}
//! resize the matrix and refill all with the given value
void Resize(const size_t nbRow, const size_t nbCol, const T& value)
{
m_nbRow = nbRow;
m_nbCol = nbCol;
m_array.resize( m_nbRow * m_nbCol, value );
}
//! destructor
~Dyn2dMatrix()
{
m_array.clear();
}
//! accessor
T operator () ( const size_t col, const size_t row ) const
{
return m_array[m_nbCol*row+col];
}
//! get matrix width ( nb col )
size_t Width() const { return m_nbCol; }
//! get matrix height ( nb row )
size_t Height() const { return m_nbRow; }
//! total number of elements
size_t Size() const { return m_array.size(); }
//! mutator
T & operator () ( const size_t col, const size_t row )
{
return m_array[m_nbCol*row+col];
}
//! mutator
T & operator () ( const size_t pos )
{
return m_array[pos];
}
//! fill the matrix with the same value
void Fill( const T & value )
{
std::fill( m_array.begin(), m_array.end(), value);
}
//! replace element
void Replace( const T & before, const T & after )
{
for ( size_t i = 0; i<m_array.size(); i++ )
if ( m_array[i] == before )
m_array[i] = after;
}
//! ToString
std::string ToString() const
{
std::string strRet;
for ( size_t i = 0; i<m_array.size(); i++ )
{
strRet += Tools::ToString<T>( m_array[i] );
if ( ( (i+1) % m_nbCol) == 0 )
strRet += "\n";
}
return strRet;
}
private:
//! matrix size
size_t m_nbRow, m_nbCol;
//! datas
std::vector<T> m_array;
};
#endif // __H_DYN_2D_MATRIX_H__