настоящее время у меня это:C++ - Как создать свойство, которое можно использовать с _ внутри класса?
template <typename T>
class property<T, kPropertyReadOnly> {
T value;
public:
property() {}
property(T initValue) : value(initValue){}
T & operator = (const T &i) {
return value = i;
}
operator T const &() const {
return value;
}
};
Какой вид приносит свойства C++. Скажем, у нас есть класс:
class foo {
property<int> myProperty;
}
Тогда я хотел бы, чтобы иметь возможность использовать свойство от внешнего мира, как это:
Foo foo();
foo.myProperty = 2;
Но внутри класса Foo, я хотел бы чтобы быть в состоянии сделать это:
void Foo::myFooFunction() {
_myProperty = 2;
}
Таким образом, это очень ясно, что это переменная экземпляра/собственность, но при использовании с внешней стороны вы не должны делать это уродливое вещь:
foo._myProperty = 2;
Я знаю, что шаблоны могут делать много магии, но могут ли они это сделать?
Чтобы уменьшить вероятность столкновения с символами компилятора, я рекомендуем использовать '_' как * суффикс * (в конце), а не как * префикс * (в начале). –
Можете ли вы объяснить, почему? Я хотел бы использовать его в начале, потому что тогда автозаполнение помогает много, при наборе подчеркивания вы видите все переменные-члены. – keyboard
Поскольку в соответствии со стандартом языка предшествующие символы подчеркивания зарезервированы для символов компилятора. Языковой адвокат или кто-то с копией стандарта может ссылаться на точное местоположение. Или вы можете искать в Интернете «компилятор подпредов C++». –