操作员超载矩阵C **无代理**
operators overloads matrix c++ ** without proxy **
需要帮助
我是操作员超载的新手,现在正在尝试初始化矩阵使用oterator [] []超载。我想使用以下方式初始化矩阵:矩阵[0] [0] = 100
可以使用[] []?我如何使用它们?
//main.cpp//
void main()
{
Matrix m(2, 2);
m[0][0] = 2;
}
//matrix.h//
#ifndef MATRIX_H
#define MATRIX_H
class Matrix
{
public :
Matrix(int ,int );
Matrix operator [][] // *****im stuck here*****
private :
int numRows;
int numCols;
int **matrix;
}
#endif
//matrix.cpp//
#include <iostream>
#include "Matrix.h"
using namespace std;
Matrix::Matrix(int rows,int cols)
:numOfCols(cols),numOfRows (rows)
{
matrix=new int *[cols];
for(int i=0;i<rows;i++)
{
matrix[i]=new int [cols];
for(int c=0;c<cols;c++)
{
matrix[i][c]=0;
}
}
}
有很多这样做的方法,这是我之前准备的一种方法,它使用代理类代表行。请注意,不会特别表现,也不会实现复制/分配/移动等。
#include <iostream>
using namespace std;
class Mat2 {
public:
Mat2( unsigned int x, unsigned int y ) :
mX(x), mY(y), mData( new int[x * y] ) {}
~Mat2() {
delete [] mData;
}
int & At( unsigned int x ,unsigned int y ) {
return mData[ x * mY + y ];
}
class XProxy {
public:
XProxy( unsigned int x, Mat2 * mat ) :mX(x), mMat(mat) {}
int & operator[]( unsigned int y ) {
return mMat->At( mX, y );
}
private:
unsigned int mX;
Mat2 * mMat;
};
XProxy operator[]( unsigned int x) {
return XProxy(x, this);
}
private:
unsigned int mX, mY;
int * mData;
};
int main() {
Mat2 m(4,6);
m[1][3] = 42;
cout << m.At( 1, 3 ) << endl;
}
相关文章:
- 代理对象的常量正确性
- 有什么好的方法可以让系统调用代理允许在单元测试中进行模拟
- 具有所表示类的相同构造函数签名的代理类模板
- 寻找地理和伤害意味着超载
- 没有可行的超载'='用于shared_ptr
- "专业化不参与超载"
- 类型为 'std::map< char,int > 的 <Swig 对象的代理
- 虚拟超载运算符>>和<<
- 我如何知道QNetWorkReped来自哪个代理?
- C++向量初始化遗传算法的代理向量
- 为什么我的超载"+"运算符返回的总额错误?
- 类(可能是代理)的命名,允许在不修改基础容器的情况下对项目进行排序和删除
- 如何将HTTPS流量重定向到本地主机:443上的代理?
- 适用于 Linux 的 c++ 上的代理脚本
- SNMP 代理在单元测试期间断开连接
- 模板代理方法无法编译
- 对于代理容器上的迭代器来说,"least bad implementation"可能是什么?
- 如何在ZMQ代理中记录接收消息?
- C++ boost::asio https 通过代理
- 操作员超载矩阵C **无代理**