在简单的Point类中,是否存在getter/setter而不是公共成员变量的真实参数?

zbo*_*son 9 c++

我有两个简单的类来处理3d几何PointVector.它们都有3个坐标作为公共成员变量,并定义了一些运算符+, -, * ....

class Point
{
public:
    double x, y, z;
    // ctor and some operators   
}


class Vector
{
public:
    double x, y, z;
    // ctor and some operators   
}
Run Code Online (Sandbox Code Playgroud)

是否有任何反对让coordiantes公开的真正理由?我永远不会改变double任何其他类型.我不想将值限制在x, y, z特殊范围内,我不想在设置坐标时检查任何内容.

这些类位于一个库中,供其他项目使用.

更新:
对我来说,对于setter/getter来说,一个很大的不满就是必须像这样编写/读取代码:

myVec.setX(myVec.x() + 1.0);
Run Code Online (Sandbox Code Playgroud)

代替

myVec.x += 1.0;
Run Code Online (Sandbox Code Playgroud)

Upadate 2:
Qt在QPoint中使用getter/setter但没有任何好处

Dan*_* T. 3

在 C++ 中,我会添加 setter 和 getter,只要符合统一访问原则即可;为什么调用者必须跟踪存储的内容和计算的内容?

当涉及到基本数据类型时,唯一不变的是范围,我会很高兴地承认额外的努力可能不值得。但是像 Range 类型(带有 .high、.low、.distance)这样的东西需要维护一个不变量(hight >= low,距离 = high - low),那么它是必要的。否则,该类型的所有客户端最终都必须维护不变量,而这本应是类型本身的工作。