【发布时间】:2015-02-23 17:08:08
【问题描述】:
我想在二维向量的情况下创建一个运算符[]。经过搜索,我发现不可能传递两个参数。我如何获得m_matrix[i][j] 的主要值?
相关代码:
class MyMatrix
{
public: // Methods
MyMatrix();
~MyMatrix();
int operator[] (int n);
private: // Attributes
int m_n;
int m_m;
std:: vector <std:: vector <int> > m_matrix;
};
int MyMatrix::operator[](int n, int m) // in the cpp
{
if (n>=0 && m>=0 && n<=m_n && m<=m_m)
{
return m_matrix[n-1][m-1];
}
else
{ cout<<"******************"<<endl;
cout<<"No valid index"<<endl;
cout<<"******************"<<endl;
return 0;
}
}
...
mat_test1[2][2]; // for example in the main
这是怎么回事?
【问题讨论】:
-
operator[]只能接受一个参数,句号。你可以使用operator(),或者让operator[]返回一个实现自己的代理operator[]。 -
您可以改用
operator()(size_t, size_t)。 -
std::vector<int>& operator[] (int n);呢? -
@juanchopanza 为什么?除了执行标准库中已经存在的反模式之外,还有什么变化。
-
@juanchopanza 我批评使用
size_t,而不是()。我在自己的回答中提到了这种可能性。
标签: c++ vector operator-keyword