2015-02-14 3 views
0

У меня есть частная собственность в моем классе, и я хочу добавить код на свой сеттер, как я могу это сделать?Как переопределить сеттер?

Я мог бы сделать это с помощью метода, но я не хочу просто использовать свойство.

private: 
    float damage; 
+2

Можете ли вы рассказать о своем вопросе немного лучше? Это немного неясно, что именно вы хотите. – Kacy

+5

У C++ нет «свойств», подобных C#. Вы бы использовали метод. –

ответ

1

Вы можете заменить обычный старый тип данных с типом класса, чтобы делать то, что вы хотите:

class Damage 
{ 
public: 
    Damage& operator=(float x) { value = x; /* add code here*/ } 
    operator float() const { return value; } 

private: 
    float value; 
}; 

Тогда просто заменить вашу float с Damage, и вы можете заставить его вести себя, как вы хотите.

+0

Я думаю, что этот класс имеет небольшое преимущество перед использованием простого 'float'. Если целью является повышение безопасности типов, следует заменить оператор преобразования на явную функцию-член и подумать о том, чтобы сделать конструктор «явным». –

+0

@ChristianHackl: преимущество заключается в том, что он позволяет вставлять код (поведение) в присваивание (сеттер). Речь идет не о безопасности типов, а о выполнении требований OP. В любом случае, да, класс, который я написал, является неполным и может быть улучшен различными способами в зависимости от деталей из кода OP, которые здесь не известны. –

Смежные вопросы