Ну, например, у меня есть класс карты, который имеет несколько членов: sizeX, sizeY, вектор плиток, имя и т. Д.
Существует два основных подхода к управлению его переменными, доступ к которым осуществляется извне:
Мне не нравится ни один из них. У меня возникла идея: член класса, который извне действует как const (так что вы можете легко получить к нему доступ, object.member, но это безопасно), а внутри класса он неконстантный. Однако, насколько я знаю, в С ++ этого нет. Единственный (безобразный) обходной путь, который я знаю, — это иметь все const и использовать const cast внутри функций класса.
Есть ли лучший подход для этого в C ++ 11? Есть ли ключевое слово для этого?
Простой обходной путь, чтобы немного уменьшить количество печатания:
#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 () снаружи.
Других решений пока нет …