Показать сообщение отдельно
  #50 (permalink)  
Старый 29.01.2012, 19:47
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от Livaanderiamarum
верно! арифметическое сокращение тоже может работать только с количествами. а не с нулями.
Если так сильно хочется делить и умножать на нуль, наслаждайся

#include <iostream>

class Int {
	public:
		Int(int i): value(i) {}
		
		operator int() const {
			return value;
		}

		int operator*(Int &rv) {
			if_null(rv);
			return value * rv;
		}
		
		int operator/(Int &rv) {
			if_null(rv);
			return value / rv;
		}
		
	private:
		int value;

		inline void if_null(Int &rv) {
			if (value == 0)
				value = 1;
			
			else if (rv == 0)
				rv = 1;
		}
};

int main() {
  Int a = 0;
  Int b = 5;

  int i = a * b; //5
  int j = a / b; //5
  
  std::cout << "0 * 5 = " << i << "\n0 / 5 = " << j << std::endl;

  return 0;
}

Последний раз редактировалось monolithed, 29.01.2012 в 19:53.
Ответить с цитированием