Есть ли в C ++ способ принудительно использовать методы получения или установки в пределах класса?
class C{
private:
int x; // should only be Changed by setX();
private:
setX(int i){
(...) // enforce some complicated invariantes
x = i;
};
m(){
x = 5; // should not not allowed
}
}
Единственное, что мне приходит в голову, - это поместить все суперприватные члены как частные переменные в абстрактный базовый класс с защищенными геттерами / сеттерами.
Но это не похоже на хорошую практику.
Существуют ли более распространенные способы или соглашения, гарантирующие, что все используют сеттеры?
(Моя цель:
Если класс становится больше, мне трудно вспомнить, какие переменные содержат инварианты. И в настоящее время перед установкой любой переменной я ищу, создал ли я геттер или сеттер (чтобы узнать, должен ли я учитывать инварианты). Но я хочу избавиться от этого непрофессионального поиска каждый раз.)