重载成员函数以接收分配的值?
Overloading a member function to receive an assigned value?
我想创建一个 class 的两个方法来访问和修改该实例中的一些数据。
例如:
int val = image.at(row, col);
image.at(row, col) = 255;
有没有办法重载该函数,以便在调用时允许赋值 image.at(row,col)
?
您不一定需要为此编写 2 个方法。只要 at
returns 一个可以赋值的值(即 l-value),相同的函数就可以访问和修改数据:
struct Image
{
int& at(int, int);
// ^^^^
};
但是,当您要访问其数据的对象是 const 对象时,您应该提供重载:
struct Image
{
int& at(int, int);
int const& at(int, int) const; // for const objects
};
我想创建一个 class 的两个方法来访问和修改该实例中的一些数据。
例如:
int val = image.at(row, col);
image.at(row, col) = 255;
有没有办法重载该函数,以便在调用时允许赋值 image.at(row,col)
?
您不一定需要为此编写 2 个方法。只要 at
returns 一个可以赋值的值(即 l-value),相同的函数就可以访问和修改数据:
struct Image
{
int& at(int, int);
// ^^^^
};
但是,当您要访问其数据的对象是 const 对象时,您应该提供重载:
struct Image
{
int& at(int, int);
int const& at(int, int) const; // for const objects
};