c++ - C++ 模板类定义 - 不同类的模板化返回类型
问题描述
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
and声明Array2D
为独立的类,例如
template <class T>
class Row;
template <class T>
class Array2D
{
// ...
};
和
template <class T>
class Array2D;
template <class T>
class Row
{
// ...
};
推荐阅读
- c# - 有趣的问题:根据共同属性将对象组织到 bin 中
- html - HTML 电子邮件模板(if / else Outlook or not)不起作用
- java - 如何使用 Junit 测试实现 Runnable 的类
- mysql - 选择主表中的多行
- c# - NuGet 包引用在我的项目引用列表中,但不在 .csproj 中?
- python - 装饰器将函数的返回类型从字典转换为命名元组
- android - Android 数据绑定默认变量值
- swift - 为什么我在 IOS 模拟器上运行测试时我的广告没有展示?
- reactjs - 如何从对象数组中识别组件名称
- system.reactive - 重新实例化对象激射事件时可观察到的 FromEventPattern