是否应该对复杂数据类型使用访问器



你应该对复杂数据类型使用访问器吗?下面是一个示例:

假设我有一个Player类,里面有一个Sprite对象。假设 Sprite 对象具有 setPosition() 访问器方法。现在假设我想通过播放器调用该方法,因此我在Player中创建了一个Sprite对象的访问器。

class Player
{
public:
    const Sprite& getSprite() const;
private:
    Sprite sprite;
}

现在假设我创建了一个"播放器"对象,如何在sprite上调用setPosition?我不能只说playerObject.getSprite().setPosition();因为getSprite()方法返回的Sprite引用是 const。

考虑到sprite对象对其所有成员都有保护,在这种情况下,我是否应该公开sprite对象?或者这是一种不好的做法,我确实需要使用访问器?

没有好的答案:

具有 2D 点:

class Point {
    public:
    // Skipping constructors here.
    int x() const { return m_x; }
    int x&() { return m_x; }
    int y() const { return m_y; }
    int y&() { return m_y; }
    private:
    int m_x;
    int m_y;
};

与 相比,看起来有点矫枉过正

struct Point {
    int x;
    int y;
};

第一个允许您将内部数据(例如)更改为 std::vector,第二个数据结构不允许更改。即使是第一个也很麻烦,我更喜欢(但这是一个品味问题)

相关内容

  • 没有找到相关文章

最新更新