Я хотел бы иметь переменную в моем классе, которая равна const
при доступе от public
к области и не const
при доступе от private
или в защищенной области. Я хотел бы избежать использования метода getter, который возвращает ссылку на переменную const. Я попытался возиться с ключевым словом using
, но пока ничего не добился. В идеале это будет выглядеть примерно так:Использование переменной с public const modifier
class Foo
{
public:
using var = const m_var; // This is of course gibberish
private:
int m_var;
}
Я мог бы добавить переменную базового элемента общественного константный, и пусть она указывала на приватную переменную, но путь мой класс получил бы 4 байта больше, что я хотел бы избежать , Компилятор понял бы это и оптимизировал бы эту ссылку?
Любые другие идеи о том, как решить проблему?
«Я бы хотел избежать использования метода getter, который возвращает константную ссылку на переменную». Почему нет? Это рекомендуемый способ сделать это. Ссылка на объект такая же, как и прямой доступ к объекту с точки зрения языка, поэтому одно и то же: – KABoissonneault
И нет, C++ не имеет чего-то вроде свойств C# – KABoissonneault
Геттер-метод разрешил бы проблему, но он также выглядит уродливым: 'object.var.incrementByOne()' vs 'object.getVar(). incrementByOne()'. Несмотря на то, что функциональность такая же, она выглядит скорее как копия переменной возвращается и работает, а не сама фактическая переменная. Я должен добавить, что 'incrementByOne()' (по какой-либо причине) является функцией 'const'. –