![](/img/trans.png)
[英]C++ Explicit templated function instantiation for templated class of different type
[英]C++ Templated Classes Definition - Templated Return Type of Different Class
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)
{
}
如果你写
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
{
// ...
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.