简短的回答是不,你不能那样做。
对于可以作为数组访问的2D向量,我会做类似的事情:
struct Vec2 {
float x;
float y;
const float &operator[](const size_t i) const {
static_assert(sizeof(Vec2) == 2 * sizeof(float));
assert(i < 2);
return (&x)[i];
}
float &operator[](const size_t i) {
return const_cast<float &>(std::as_const(*this)[i]);
}
};
因此,您可以直接访问成员变量,也可以使用重载的下标运算符。
Vec2 v{4,5};
v.x += 9;
v[1] = -3;
通常,显式调用getter和setter。我已经看到很多命名约定,就是给getter和setter取相同的名字。
class Foo {
public:
int member() const {
return hidden;
}
void member(const int value) {
hidden = value;
}
private:
int hidden;
};
此命名约定使访问非常干净,但仍然清楚地表明正在进行函数调用。
Foo f;
f.member(5);
int five = f.member();
本文链接:https://www.f2er.com/2794025.html