繁体   English   中英

C ++模板化类定义 - 不同类的模板化返回类型

[英]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;

// ...
};

你说Array2DRow内定义的模板类。

我想你的意图是将RawArray2D声明为独立的类,所以就像

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM