es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo pasar una matriz de matrices a una clase de plantilla con parámetros no tipados.

Supondría que el siguiente código funcionaría para inicializar la clase Matrix, pero para Matrix C obtengo lo siguiente:
error C2440: ‘inicialización’: no se puede convertir de ‘lista de inicializadores’ a ‘Math::Linear::Matrix<int,2,2>’

    template<class t,="" unsigned="" int="" rows,="" unsigned="" int="" cols="">
    class Matrix
    {
    public:
        Matrix(std::array<><t,cols>,Rows> ArrayArray)
        {

        }
    }

std::array<><int, 2="">, 2> A = {{ {{1,1}} , {{1,1}} }};
Matrix<int, 2,="" 2=""> B = A;
Matrix<int, 2,="" 2=""> C = {{ {{1,1}} , {{1,1}} }};</int,></int,></int,></t,cols></class></int,2,2>
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El código inicializa una clase Matrix utilizando un array de arrays. stdarray y las llaves se utilizan para definir los arrays y para inicializar la Matrix. La clase Matrix tiene un constructor que toma el objeto ArrayArray como argumento.

    Sin embargo, el código encuentra un error al intentar inicializar Matrix C utilizando una lista de inicialización. El mensaje de error sugiere que el compilador no puede convertir la lista de inicialización a un objeto Matrix.

    Una posible solución es modificar el constructor de Matrix para que acepte una lista de inicialización en lugar de un array de arrays. Otra opción es utilizar llaves anidadas al inicializar la Matrix para que coincidan con la estructura de arrays.

    Por ejemplo, el siguiente código debería funcionar:

    Matrix<int, 2,="" 2=""> C = {
      {{1, 1}},
      {{1, 1}}
    };
    

    Esto inicializa la Matrix C con los valores [1 1; 1 1].</int,>

Comments are closed.