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

Аналог делфийского do with в c++ - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 37, средняя оценка - 4.62
ffss
Сообщений: n/a
13.03.2010, 20:07     Аналог делфийского do with в c++ #1
C++
1
2
3
4
5
6
7
8
9
10
class MyClass
{
int a,b,c;
}
 
MyClass ObjectOfMyClass;
 
ObjectOfMyClass.a=1;
ObjectOfMyClass.b=213;
ObjectOfMyClass.c=321;
В делфи подобное присваивание можно было организовать как-то так:

Delphi
1
2
3
4
5
with ObjectOfMyClass do begin
a=1;
b=213;
c=321;
end;
а есть ли какой-нибудь аналог в c++?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.03.2010, 20:07     Аналог делфийского do with в c++
Посмотрите здесь:

C++ strtoupper аналог в С++ ...
C++ Аналог AnsiString в Qt
[C++] аналог getchar() C++
аналог getch() C++
аналог Sleep C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2294 / 1664 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
13.03.2010, 20:08     Аналог делфийского do with в c++ #2
ffss, нет и не за чем.
Day
 Аватар для Day
1149 / 954 / 57
Регистрация: 29.10.2009
Сообщений: 1,384
14.03.2010, 00:00     Аналог делфийского do with в c++ #3
ffss, увы, в Си аналога дельфийскому ВУИВ нет. ИМХО, это единственный момент, где в выразительности Си уступает Паскалю.
Приходится пользоваться возможностями редактора и копировать блоками.
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2294 / 1664 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
14.03.2010, 00:09     Аналог делфийского do with в c++ #4
Day, каким образом отсутствие аналога with ... do негативно сказывается на выразительность?
Вообще конструкций вида
Pascal
1
2
3
4
5
6
7
with object do begin
  a = 1;
  b = 2;
  c = 3;
  d = 4;
  e = 5;
end
стоит избегать вообще.
Язык позволяет "вложит многое в компактный код" и этим нужно пользоваться.
Если взять пример автора то легко решить проблему не порождая лишнего кода:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class MyClass
{
public:
  MyClass(int a, int b, int c)
  : a (a), 
    b (b),
    c (c) {
  }
 
private:
  int a;
  int b;
  int c;
};
 
// ...
  MyObject object(1, 2, 3);
// ...
Day
 Аватар для Day
1149 / 954 / 57
Регистрация: 29.10.2009
Сообщений: 1,384
14.03.2010, 00:57     Аналог делфийского do with в c++ #5
CyBOSSeR,
стоит избегать вообще.
Если избегать всего, что стоит избегать, то лучше всего просто бежать подальше
Пример твой хорош, но если приходиться пользоваться классом ВНЕ его функций, то увы! приходится повторять его поднадоевшее имя. Примеров приводить не буду - возьми любую книжку по Си или ++, любой примерчик да и просто любую прогу, и попробуй "виртуально" применить конструкцию типа WITH, и код процентов на 20-40 сократится, станет более компактным и внятным.
Я отнюдь не поклонник Дельфи и Паскаля, совсем напротив, Си изящней и логичней во 100 крат
(но не ++!) (ИМХО)
Надо объективно относиться к конкуренту
Monte-Cristo
 Аватар для Monte-Cristo
2805 / 1370 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
14.03.2010, 01:00     Аналог делфийского do with в c++ #6
Цитата Сообщение от Day Посмотреть сообщение
ffss, увы, в Си аналога дельфийскому ВУИВ нет. ИМХО, это единственный момент, где в выразительности Си уступает Паскалю.
Приходится пользоваться возможностями редактора и копировать блоками.
Вообще-то есть такая штука - как Инкапсуляция данных... Так вот так делать :

C++
1
2
3
4
5
6
7
8
9
10
class MyClass
{
int a,b,c;
}
 
MyClass ObjectOfMyClass;
 
ObjectOfMyClass.a=1;
ObjectOfMyClass.b=213;
ObjectOfMyClass.c=321;
это перечить Идеалогии С++...
Day
 Аватар для Day
1149 / 954 / 57
Регистрация: 29.10.2009
Сообщений: 1,384
14.03.2010, 01:20     Аналог делфийского do with в c++ #7
Monte-Cristo,
это перечить Идеалогии С++...
Да задолбали меня все эти идеологи!
Тут идеология, там идеология.
Я жить хочу. Я работать хочу. И чтоб жить и работать было удобно.
Такого эти идеологи навертели, не то что покакать - плюнуть некуда!
Я месяц потерял в этих идеологиях разбираючись. А проект надо сдать до мая, весной я хочу на дачу. Плюнул на все и сделал по-своему, по-стариночке. За день сделал пол-работы, стоило только идеологов подальше послать.
Только вот не спится...
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2294 / 1664 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
14.03.2010, 01:28     Аналог делфийского do with в c++ #8
Day, просто стоит изучить, а главное понять концепции лежащие в основе ООП, а затем уже браться за конкретные механизмы их реализации в языке. Тогда все будет гораздо проще.
"все эти идеологии" при правильном применении в конечном счете обеспечивают более быструю разработку стабильного, изящного и расширяемого ПО.
Nick Alte
Эксперт С++
1590 / 982 / 115
Регистрация: 27.09.2009
Сообщений: 1,898
Завершенные тесты: 1
14.03.2010, 10:54     Аналог делфийского do with в c++ #9
Цитата Сообщение от Day Посмотреть сообщение
Да задолбали меня все эти идеологи!
Тут идеология, там идеология.
Я жить хочу. Я работать хочу. И чтоб жить и работать было удобно.
Идеологии для того и придумывали, чтобы работалось удобно. И придумывали не суровые убелённые сединами теоретики, сидя в башне из слоновой кости, в промежутках между подсчётами ангелов, помещающихся на острие иглы, а опытные умелые программисты, старающиеся облегчить свою жизнь. Как говорят в армии, "уставы пишутся кровью". С идеологиями также - это результат осмысления большого количества практики.
Так что капризничать и заявлять, что противные идеологии скучные и надоели - себе дороже. Особенно если этот проект, который "сдать до мая", потом заставят сопровождать и поддерживать...
Monte-Cristo
 Аватар для Monte-Cristo
2805 / 1370 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
14.03.2010, 11:38     Аналог делфийского do with в c++ #10
Цитата Сообщение от Day Посмотреть сообщение
Я жить хочу.
Это проблематично...

Цитата Сообщение от Day Посмотреть сообщение
Я работать хочу.
Если не будешь придерживаться концепции ООП, а делать так, как хочется тебе, то боюсь, работы тебе не видать..
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.06.2013, 14:10     Аналог делфийского do with в c++
Еще ссылки по теме:

C++ Аналог strrchr
C++ Аналог sprintf
C++ Аналог goto

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

Или воспользуйтесь поиском по форуму:
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
13.06.2013, 14:10     Аналог делфийского do with в c++ #11
Цитата Сообщение от Day Посмотреть сообщение
увы, в Си аналога дельфийскому ВУИВ нет.
какому такому вуив? там with (виз), а не vuiv.

Добавлено через 3 минуты
Цитата Сообщение от Day Посмотреть сообщение
ИМХО, это единственный момент, где в выразительности Си уступает Паскалю.
И в чём уступка? Если объект имеет сотни полторы членов, то за экран много раз вылезешь и как раз на делфях потеряешь выразительность, так как будет не видно к какому конкретно объекту относится каждое присваивание и член ли вообще объекта присваивается, или самостоятельная переменная.

Добавлено через 2 минуты
Цитата Сообщение от Day Посмотреть сообщение
Примеров приводить не буду - возьми любую книжку по Си или ++, любой примерчик да и просто любую прогу, и попробуй "виртуально" применить конструкцию типа WITH, и код процентов на 20-40 сократится, станет более компактным и внятным.
Менее ты хотел сказать.

Добавлено через 3 минуты
Цитата Сообщение от Day Посмотреть сообщение
Я отнюдь не поклонник Дельфи и Паскаля, совсем напротив, Си изящней и логичней во 100 крат
(но не ++!) (ИМХО)
Надо объективно относиться к конкуренту
Я люблю и паскаль тоже, но не из-за виза, именно виз специально вообще не стал изучать, так как он не нужен. Не стал разбираться, например, с тем, можно ли под визом обратиться к одиночной переменной, или любое имя понимается только как имя члена. Зачем? Особенности вредной фичи мне не интересны.

Добавлено через 2 минуты
Цитата Сообщение от Monte-Cristo Посмотреть сообщение
Вообще-то есть такая штука - как Инкапсуляция данных... Так вот так делать :
class MyClass
{
int a,b,c;
}
MyClass ObjectOfMyClass;
ObjectOfMyClass.a=1;
ObjectOfMyClass.b=213;
ObjectOfMyClass.c=321;
это перечить Идеалогии С++...
Если ты спрячешь абсолютно все данные, то без толку усложнишь интерфейс, что как раз и противоречит идеологии плюсов, это всё такие не джава с решёткой в перемешку.

Добавлено через 7 минут
Цитата Сообщение от Nick Alte Посмотреть сообщение
Как говорят в армии, "уставы пишутся кровью".
Обращение офицеров друг к другу только на Вы, с приставкой "товарищ" и явным указанием звания тоже кровью написано? В бою надо время экономить, а не в политес играть, так что если бы кровью, то на Вы, но как можно проще и короче с упоминанием званий, имён и должностей только для исключения путаницы в тех случаях, когда без явного указания нельзя понять, к кому конкретно обращаются. Причём, если равных по званию присутствует человека 2, а то и 10, то не упоминать такое звание вообще, так как оно ситуацию не проясняет.
Yandex
Объявления
13.06.2013, 14:10     Аналог делфийского do with в c++
Ответ Создать тему
Опции темы

Текущее время: 08:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru