Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
ComputerMouse
6 / 6 / 3
Регистрация: 06.11.2012
Сообщений: 254
#1

Создать оператор, наподобии if или while - C++

27.08.2013, 23:53. Просмотров 921. Ответов 14
Метки нет (Все метки)

Могу ли я, пользуясь встроенными средствами C++ (ну или какой-нибудь библиотекой) создать собственный оператор, умеющий работать с блоками кода? То есть написать оператор, выглядящий как-то так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
mycodeblockoperator(a==b)
{
 
}
on
{
 
} 
off
{
 
}
Или же это придется делать при помощи макросов? Если при помощи макросов - подскажите как, я туплю.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.08.2013, 23:53     Создать оператор, наподобии if или while
Посмотрите здесь:
Подскажите, нужно перегрузить оператор или создать метод(если создать то не понимаю как) записи в файл C++
C++ WinAPI Окна наподобии Ccleaner
Стиль ListBox-a (WinApi), а также возможность реалиации в программе чего-то наподобии дерева папок C++ WinAPI
C++ Оператор ИЛИ
C++ Логический оператор ИЛИ
C++ оператор pow, или почему он не работает?!
Оператор if или где скрыта ошибка C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kastaneda
Форумчанин
Эксперт С++
4479 / 2841 / 226
Регистрация: 12.12.2009
Сообщений: 7,222
Записей в блоге: 1
Завершенные тесты: 1
29.08.2013, 12:29     Создать оператор, наподобии if или while #2
как то так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
 
#define mycodeblockoperator(a) if(a) goto on_; else goto off_;
#define on on_: if(true)
#define off  else off_:
 
int main()
{
    int a = 4;
    int b = 5;
  
    mycodeblockoperator(a == b)
    {
        // непонятно, что должно быть тут
    }
    on
    {
        std::cout << "on" << std::endl;
    } 
    off
    {
        std::cout << "off" << std::endl;
    }
}
ComputerMouse
6 / 6 / 3
Регистрация: 06.11.2012
Сообщений: 254
29.08.2013, 12:42  [ТС]     Создать оператор, наподобии if или while #3
Цитата Сообщение от Kastaneda Посмотреть сообщение
как то так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
 
#define mycodeblockoperator(a) if(a) goto on_; else goto off_;
#define on on_: if(true)
#define off  else off_:
 
int main()
{
    int a = 4;
    int b = 5;
  
    mycodeblockoperator(a == b)
    {
        // непонятно, что должно быть тут
    }
    on
    {
        std::cout << "on" << std::endl;
    } 
    off
    {
        std::cout << "off" << std::endl;
    }
}
Спасибо!

Не по теме:

Я реализую тернарную логику для C++, и мне нужно сделать новый if.

Kastaneda
Форумчанин
Эксперт С++
4479 / 2841 / 226
Регистрация: 12.12.2009
Сообщений: 7,222
Записей в блоге: 1
Завершенные тесты: 1
29.08.2013, 12:51     Создать оператор, наподобии if или while #4
Цитата Сообщение от ComputerMouse Посмотреть сообщение
Я реализую тернарную логику для C++
Так есть же тернарный оператор. Или нужно что-то типа фортрановского
Fortran
1
if (a) 10, 20, 30
которое развернется в
C++
1
2
3
if (a < 0) goto 10;
if (a == 0) goto 20;
if (a > 0) goto 30;
?
ComputerMouse
6 / 6 / 3
Регистрация: 06.11.2012
Сообщений: 254
29.08.2013, 13:05  [ТС]     Создать оператор, наподобии if или while #5
Цитата Сообщение от Kastaneda Посмотреть сообщение
Так есть же тернарный оператор. Или нужно что-то типа фортрановского
Fortran
1
if (a) 10, 20, 30
которое развернется в
C++
1
2
3
if (a < 0) goto 10;
if (a == 0) goto 20;
if (a > 0) goto 30;
?
Я имею в виду базовую логику. То есть делаю так, чтобы программа была построена не на true и false, а на true, false и dontknow. Это дает много полезных плюшек.
ForEveR
В астрале
Эксперт С++
7968 / 4730 / 320
Регистрация: 24.06.2010
Сообщений: 10,539
Завершенные тесты: 3
29.08.2013, 13:05     Создать оператор, наподобии if или while #6
ComputerMouse, boost::tribool же. Переделка if для этого не нужна как бэ.
ComputerMouse
6 / 6 / 3
Регистрация: 06.11.2012
Сообщений: 254
29.08.2013, 13:39  [ТС]     Создать оператор, наподобии if или while #7
Цитата Сообщение от ForEveR Посмотреть сообщение
ComputerMouse, boost::tribool же. Переделка if для этого не нужна как бэ.
То есть как не нужна? Я подаю в if тернарное значение, нормальный if с этим работать не будет => нужен свой if с синтаксисом
C++
1
2
3
4
5
6
7
8
if(a)
{
 
} else {
 
} dontknow {
 
}
ForEveR
В астрале
Эксперт С++
7968 / 4730 / 320
Регистрация: 24.06.2010
Сообщений: 10,539
Завершенные тесты: 3
29.08.2013, 13:43     Создать оператор, наподобии if или while #8
ComputerMouse, Посмотрите на tribool. Через макросы это делать глупо.
ComputerMouse
6 / 6 / 3
Регистрация: 06.11.2012
Сообщений: 254
29.08.2013, 13:46  [ТС]     Создать оператор, наподобии if или while #9
Предположим у нас есть тернарное выражение:
C++
1
(a && !b) || (a && b) || (!b && a)
Его по человечески, не имея варианта dontknow не оформишь. А что если их несколько?
ForEveR
В астрале
Эксперт С++
7968 / 4730 / 320
Регистрация: 24.06.2010
Сообщений: 10,539
Завершенные тесты: 3
29.08.2013, 13:49     Создать оператор, наподобии if или while #10
ComputerMouse, В boost::tribool есть undeterminate. Может посмотрите на ссылку то все же?
ComputerMouse
6 / 6 / 3
Регистрация: 06.11.2012
Сообщений: 254
29.08.2013, 13:52  [ТС]     Создать оператор, наподобии if или while #11
Я посмотрел на ссылку. Я имею в виду варианта dontknow в if. Реализация, которая там:
C++
1
2
3
4
5
6
7
8
9
10
11
12
if (a)
{
 
}
else if (!a)
{
 
}
else
{
 
}
менее удобная чем
C++
1
2
3
4
5
6
7
8
9
10
11
12
if
{
 
}
else
{
 
}
dontknow
{
 
}
ForEveR
В астрале
Эксперт С++
7968 / 4730 / 320
Регистрация: 24.06.2010
Сообщений: 10,539
Завершенные тесты: 3
29.08.2013, 13:55     Создать оператор, наподобии if или while #12
ComputerMouse, Ну конечно же... Макросы это ведь так удобно.
C++
1
2
3
4
5
6
7
8
9
if (a)
{
}
else if (undeterminate(a))
{
}
else
{
}
Чем неудобно? Если так уж хочется dontknow там есть специальный макрос, который может ввести данное ключевое слово как синоним undeterminate.
ComputerMouse
6 / 6 / 3
Регистрация: 06.11.2012
Сообщений: 254
29.08.2013, 14:01  [ТС]     Создать оператор, наподобии if или while #13
Мне неважно слово, которым обозначается неизвестное значение, я говорю про удобство другого синтаксиса оператора if для тернарной логики, вот и все.
ForEveR
В астрале
Эксперт С++
7968 / 4730 / 320
Регистрация: 24.06.2010
Сообщений: 10,539
Завершенные тесты: 3
29.08.2013, 14:05     Создать оператор, наподобии if или while #14
ComputerMouse, Гвозди тоже можно отверткой заколачивать... Как знаете. То, что вы хотите возможно только с помощью макросов... Переопределять if - идея крайне плохая.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.08.2013, 14:08     Создать оператор, наподобии if или while
Еще ссылки по теме:
new - это операция или все таки оператор? C++
Как создать виртуальный поток и переопределить оператор <<? C++
Оператор множественного выбора: создать текстовое меню C++
Можно ли задать оператор сравнения (< или >) для string C++
C++ Что значит оператор ^ (кроме поразрядного исключающего или)?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
ComputerMouse
6 / 6 / 3
Регистрация: 06.11.2012
Сообщений: 254
29.08.2013, 14:08  [ТС]     Создать оператор, наподобии if или while #15
Я намерен оставить обе возможности, чтобы каждый работал с тем синтаксисом, который ему удобен. И это, кстати, моя последняя задача, я уже саму логику, операторы и т.д. сделал.
Yandex
Объявления
29.08.2013, 14:08     Создать оператор, наподобии if или while
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru