Ricevo errori del compilatore quando si tenta di accedere a una funzione membro modello di una classe modello da un'altra classe modello. Una chiamata di funzione a getSubmatrix
genera negli avvisi del compilatore "espressione risultato inutilizzato", sui parametri (0, 0)
, infine non riesce con l'errore del compilatore "il riferimento alla funzione membro non statico deve essere chiamato".Impossibile chiamare una funzione membro modello di una classe modello da un'altra classe modello
classe Matrix:
template <std::size_t m, std::size_t n, typename T, std::size_t rowPadding = 0>
class Matrix
{
public:
...
template <std::size_t p, std::size_t q>
Matrix<p, q, T, n - q>& getSubmatrix(std::size_t column, std::size_t row)
{
...
}
};
L'trasformare classe:
template <typename T>
class Transform
{
public:
...
Matrix<4, 4, T> matrix() const
{
...
Matrix<4, 4, T> result;
result.getSubmatrix<3, 3>(0, 0) = Matrix<3, 3, T>();
...
}
};
Nota che cambiando il tipo di matrice per Matrix<4, 4, float>
piuttosto che Matrix<4, 4, T>
si tradurrà in compilation valido. Il compilatore è clang 4.0 e la versione della lingua è C++ 11.
La ringrazio molto per questa voce, questo era estremamente difficile da dedurre dal messaggio di errore Clang davvero. –