重载 operator() 并在 class 内使用
Overloading operator() and using within class
我已经成功重载了 () 运算符。
inline real& Array::operator ()(int j,int i)
{
//TODO checks
return array_[i + j*xSize_];
}
它也很好用。但是我没有想出如何在 class 本身中访问它。例如下面的函数,它打印所有的元素:
for(int y = ySize_ -1; y >= 0; --y)
{
for( int x = 0; x < xSize_; ++x)
{
std::cout << this(x,y);
}
std::cout << std::endl;
}
那我怎么访问它?
您可以使用以下语法:
(*this)(x, y);
或更长的形式:
this->operator()(x, y);
或
operator()(x,y);
我已经成功重载了 () 运算符。
inline real& Array::operator ()(int j,int i)
{
//TODO checks
return array_[i + j*xSize_];
}
它也很好用。但是我没有想出如何在 class 本身中访问它。例如下面的函数,它打印所有的元素:
for(int y = ySize_ -1; y >= 0; --y)
{
for( int x = 0; x < xSize_; ++x)
{
std::cout << this(x,y);
}
std::cout << std::endl;
}
那我怎么访问它?
您可以使用以下语法:
(*this)(x, y);
或更长的形式:
this->operator()(x, y);
或
operator()(x,y);