template <class T>
Row<T> Array2D<T>::operator[](int index) const
{
}
此代码无法正常工作,并显示错误消息“声明与“ Array2D :: Row Array2D :: operator [](int index)const不兼容”(在第19行声明。)。我正在使用2个模板化类,并且我认为这是主要问题,但不确定如何解决。感谢您的帮助,如果需要更多详细信息,请告诉我。
类声明:
#pragma once
#include "Array.h"
#include "Row.h"
template <class T>
class Array2D
{
template <class T> class Row;
public:
Array2D();
Array2D(int row, int col);
Array2D(const Array2D & copy);
~Array2D();
Array2D & operator =(const Array2D & rhs);
Row<T> operator[](int index) const;
int getRow() const;
void setRow(int rows);
int getColumns() const;
void setColumns(int columns);
T & Select(int row, int column);
private:
Array<T> m_array;
int m_row;
int m_col;
};
行级:
#pragma once
#include "Array2D.h"
template <class T>
class Row
{
template <class T> class Array2D;
public:
Row(Array2D<T> & array, int row);
T & operator[](int column);
private:
Array2D<T> & m_array2D;
int m_row;
};
template <class T>
Row<T>::Row(Array2D<T> & array, int row)
{
}
template <class T>
T & Row<T>::operator[](int column)
{
}
答案 0 :(得分:3)
如果你写
template <class T>
class Array2D
{
template <class T> class Row;
// ...
};
您说Row
是在内部 Array2D
中定义的模板类。
写时也一样
template <class T>
class Row
{
template <class T> class Array2D;
// ...
};
您说Array2D
是Row
内部定义的模板类。
我想您打算将Raw
和Array2D
声明为独立的类,所以将其声明为
template <class T>
class Row;
template <class T>
class Array2D
{
// ...
};
和
template <class T>
class Array2D;
template <class T>
class Row
{
// ...
};