2

例如,我有一个地图类,它有一些成员:sizeX、sizeY、瓷砖矢量、名称等。

有两种管理从外部访问的变量的基本方法:

  • 封装,但它添加了大量代码和更多类型(setX() 和 getX() const 函数)
  • 将经常从外部访问的变量作为公共成员并保持简单

这两个我都不喜欢。我想出了一个想法:一个类成员,它从外部充当 const(因此您可以轻松访问它 object.member 但它是安全的)并且在类内部它是非常量的。但是,据我所知,c++ 缺少它。我知道的唯一(丑陋的)解决方法是让所有东西都 const 并在类函数中使用 const cast。

在 C++ 11 中有更好的方法吗?有关键字吗?

4

1 回答 1

3

一个简单的解决方法,只是稍微减少打字量:

#define MEMBER(T,x) \
  private: T x##_; \
  public: T const& x () const { return x##_; }

struct A {
  MEMBER(int,x)
  MEMBER(double,y)
};

那么你可以在类内部使用 x_ 和 y_ ,在外部使用 x() 和 y() 。

于 2013-01-23T19:05:12.250 回答