жизненная необходимость все делать через геттеры и сеттеры, потому что иначе просто опасно - такое себе, конечно. в большинстве новых языков сразу делают нормальную транзитивную константность.
но, как я уже говорил, проще закопать C++. Есть D, C#, Rust. Каждый из них в своей области лучше C++. Но, к сожалению, нет такого языка общего назначения, который бы в одиночку потягался с C++ по всем фронтам
точнее, я не знаю такого. Если подскажете - спасибо, посмотрю