Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.10.2013, 23:09   #1
Кащей
Форумчанин
 
Аватар для Кащей
 
Регистрация: 09.07.2013
Сообщений: 249
По умолчанию Макросы, define, абстрагирование

Вопрос в следующем. Научился я значит делить на ноль, и хочется конструкцию типа
#define f(a, b) (b > 0) ? a / b : a
сделать оператором в стандартном виде типа a / b.
Такое возможно?
do not use your brain
Кащей вне форума Ответить с цитированием
Старый 04.10.2013, 02:13   #2
kineziz
Форумчанин
 
Регистрация: 22.12.2011
Сообщений: 378
По умолчанию

Можно перегрузкой операторов в С++

Код:
#include <iostream>

class MyClass
{
protected:
	int m_Value;
public:
	int Get() const
	{
		return m_Value;
	}
	void operator = (int Value)
	{
		m_Value = Value;
	}
	MyClass operator / (const MyClass& refMyClass)
	{
		MyClass TempObj;
		if (refMyClass.m_Value > 0)
			TempObj.m_Value = m_Value / refMyClass.m_Value;
		else
			TempObj.m_Value = m_Value;
		return TempObj;
	}
};

int main()
{
	MyClass a;
	MyClass b;
	a = 10;
	b = 5;
	MyClass c = a / b;
	std::cout << c.Get() << std::endl;
	system("PAUSE");
	return 0;
}
А вот сам макрос думаю никак
Большинство хороших программистов делают свою работу не потому, что ожидают оплаты или признания, а потому что получают удовольствие от программирования.

Последний раз редактировалось kineziz; 04.10.2013 в 02:15.
kineziz вне форума Ответить с цитированием
Старый 04.10.2013, 09:48   #3
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

Цитата:
Сообщение от Кащей Посмотреть сообщение
Такое возможно?
Для стандартных типов (int, long, char) - нет.
Для классов - да.

Вместо макроса лучше использовать inline функцию.
Что будет, если вызвать так: f(var++, 123)
waleri вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
define roulis2844sasha PHP 1 29.03.2012 10:47
Абстрагирование от операционной системы Altera Общие вопросы по программированию, компьютерный форум 59 04.09.2010 15:10
Абстрагирование списков на Haskell Lakiii Помощь студентам 0 17.12.2009 15:00
#define JOFRIF Общие вопросы C/C++ 7 21.07.2009 18:26