У меня есть частная собственность в моем классе, и я хочу добавить код на свой сеттер, как я могу это сделать?Как переопределить сеттер?
Я мог бы сделать это с помощью метода, но я не хочу просто использовать свойство.
private:
float damage;
У меня есть частная собственность в моем классе, и я хочу добавить код на свой сеттер, как я могу это сделать?Как переопределить сеттер?
Я мог бы сделать это с помощью метода, но я не хочу просто использовать свойство.
private:
float damage;
Вы можете заменить обычный старый тип данных с типом класса, чтобы делать то, что вы хотите:
class Damage
{
public:
Damage& operator=(float x) { value = x; /* add code here*/ }
operator float() const { return value; }
private:
float value;
};
Тогда просто заменить вашу float
с Damage
, и вы можете заставить его вести себя, как вы хотите.
Я думаю, что этот класс имеет небольшое преимущество перед использованием простого 'float'. Если целью является повышение безопасности типов, следует заменить оператор преобразования на явную функцию-член и подумать о том, чтобы сделать конструктор «явным». –
@ChristianHackl: преимущество заключается в том, что он позволяет вставлять код (поведение) в присваивание (сеттер). Речь идет не о безопасности типов, а о выполнении требований OP. В любом случае, да, класс, который я написал, является неполным и может быть улучшен различными способами в зависимости от деталей из кода OP, которые здесь не известны. –
Можете ли вы рассказать о своем вопросе немного лучше? Это немного неясно, что именно вы хотите. – Kacy
У C++ нет «свойств», подобных C#. Вы бы использовали метод. –