Я хотел бы задать еще один вопрос о матричных операциях ...
template <typename T>
struct TMatrix
{
typedef std::vector < std::vector <T> > Type;
};
template <typename T>
class Matrix
{
private:
typename TMatrix <T>::Type items;
const unsigned int rows_count;
const unsigned int columns_count;
public:
template <typename U>
//Error, see bellow please
Matrix ( const Matrix <U> &M ):
rows_count ( M.getRowsCount() ), columns_count ( M.getColumnsCount() ), items ( M.getItems()){}
unsigned int getRowsCount() const {return rows_count;}
unsigned int getColumnsCount() const {return columns_count;}
typename TMatrix <T>::Type const & getItems () const {return items;}
typename TMatrix <T>::Type & getItems () {return items;}
Компилируя код, компилятор останавливается здесь:
Matrix ( const Matrix <U> &M ):
rows_count ( M.getRowsCount() ), columns_count ( M.getColumnsCount() ), items ( M.getItems()){} //Error
и показывает следующую ошибку:
Error 79 error C2664: 'std::vector<_Ty>::vector(const std::allocator<_Ty> &)' : cannot convert parameter 1 from 'const std::vector<_Ty>' to 'const std::allocator<_Ty> &'
Но я не знаю, почему ... Еще раз спасибо за вашу помощь ...
Обновленный вопрос:
Компиляция кода
template <class T>
template <typename U>
Matrix <T> :: Matrix ( const Matrix <U> &M )
: rows_count ( M.getRowsCount() ), columns_count ( M.getColumnsCount() ), items ( M.getItems().begin(), M.getItems().end()){}
со следующим результатом:
Error 132 error C2664: 'std::vector<_Ty>::vector(const std::allocator<_Ty> &)' :
cannot convert parameter 1 from 'const std::vector<_Ty>' to 'const std::allocator<_Ty> &'
c:\program files\microsoft visual studio 10.0\vc\include\xmemory 208