Я пришел из таких языков, как Actionscript 3, где у нас есть особый способ определения переменной-члена как экземпляра, так и метод установки / извлечения значения защищенного или закрытого члена. Позвольте мне привести пример:
Внутри класса мы можем сказать что-то вроде этого:
private var _myString:String;
public get myString():String
{
return _myString;
}
public set myString(newValue:String):void
{
//Do some super secret member protection n' stuff
_myString = newValue;
}
И тогда за пределами этого объекта я могу сделать следующее:
trace(myClass.myString); //Output whatever _myString is. (note the lack of (). It's being accessed like property not a method...
И еще, я мог бы сделать что-то вроде удаления метода public set myString, поэтому, если кто-то попытается сделать это с моим классом:
myClass.myString = "Something"; //Try to assign - again note the lack of ()
Будет выдано сообщение об ошибке, сообщающее пользователю, что свойство доступно только для чтения.
Теперь, когда я использую C ++, и он бесконечно более потрясающий, чем Actionscript 3, мне интересно, как я могу имитировать этот тип поведения. Я не хочу использовать кучу грязных getVariable()
и setVariable()
методов. Я надеялся, что с помощью некоторой хитрости перегрузки операторов я смогу сделать то же самое здесь. Заметьте, я новичок, поэтому, пожалуйста, обращайтесь ко мне как таковой. :)
Обновление
Я думаю, что самый простой способ объяснить это, я пытаюсь по существу иметь геттеры и сеттеры, но вызывать их с помощью присваивания, а не с помощью скобок ().