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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 37, средняя оценка - 4.62
ffss
Сообщений: n/a
#1

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

13.03.2010, 20:07. Просмотров 4896. Ответов 10
Метки нет (Все метки)

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++):

Аналог делфийского процедурного типа в C# - C#
в делфи можно создать переменную которая может хранить адрес процедуры и через эту переменную можно вызывать эту процедуру. типа type ...

Аналог Делфийского property в Java - Программирование Android
Есть ли подобное? Пытаюсь написать класс и защитить его от случайного внешнего хулигантва. Защищаю некоторые свойста на только-чтение...

SQLite Аналог 1С - Java БД
Помогите новичку! Надо написать не сложную программу для оффлайн хранения простых справочников и документов. И возможно простые отчеты...

Аналог L - C++ WinAPI
Аналог L"строка" для переменных есть? Или как использовать для переменной?

Аналог WHERE . IN (.) - PHP БД
Здравствуйте. Есть массив со значениями типа "xkd 251-1" Нужно обновить те поля таблицы, которые совпадают со значениями массива. Если...

Аналог this из C++ - C Linux
Здравствуйте. Имеется код: typedef struct { void* subItems; // Array of subitems int subItemQuan; // Subitems...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
CyBOSSeR
Эксперт C++
2300 / 1670 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
13.03.2010, 20:08 #2
ffss, нет и не за чем.
Day
1155 / 960 / 57
Регистрация: 29.10.2009
Сообщений: 1,385
14.03.2010, 00:00 #3
ffss, увы, в Си аналога дельфийскому ВУИВ нет. ИМХО, это единственный момент, где в выразительности Си уступает Паскалю.
Приходится пользоваться возможностями редактора и копировать блоками.
CyBOSSeR
Эксперт C++
2300 / 1670 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
14.03.2010, 00:09 #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
1155 / 960 / 57
Регистрация: 29.10.2009
Сообщений: 1,385
14.03.2010, 00:57 #5
CyBOSSeR,
стоит избегать вообще.
Если избегать всего, что стоит избегать, то лучше всего просто бежать подальше
Пример твой хорош, но если приходиться пользоваться классом ВНЕ его функций, то увы! приходится повторять его поднадоевшее имя. Примеров приводить не буду - возьми любую книжку по Си или ++, любой примерчик да и просто любую прогу, и попробуй "виртуально" применить конструкцию типа WITH, и код процентов на 20-40 сократится, станет более компактным и внятным.
Я отнюдь не поклонник Дельфи и Паскаля, совсем напротив, Си изящней и логичней во 100 крат
(но не ++!) (ИМХО)
Надо объективно относиться к конкуренту
Monte-Cristo
2788 / 1374 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
14.03.2010, 01:00 #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
1155 / 960 / 57
Регистрация: 29.10.2009
Сообщений: 1,385
14.03.2010, 01:20 #7
Monte-Cristo,
это перечить Идеалогии С++...
Да задолбали меня все эти идеологи!
Тут идеология, там идеология.
Я жить хочу. Я работать хочу. И чтоб жить и работать было удобно.
Такого эти идеологи навертели, не то что покакать - плюнуть некуда!
Я месяц потерял в этих идеологиях разбираючись. А проект надо сдать до мая, весной я хочу на дачу. Плюнул на все и сделал по-своему, по-стариночке. За день сделал пол-работы, стоило только идеологов подальше послать.
Только вот не спится...
CyBOSSeR
Эксперт C++
2300 / 1670 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
14.03.2010, 01:28 #8
Day, просто стоит изучить, а главное понять концепции лежащие в основе ООП, а затем уже браться за конкретные механизмы их реализации в языке. Тогда все будет гораздо проще.
"все эти идеологии" при правильном применении в конечном счете обеспечивают более быструю разработку стабильного, изящного и расширяемого ПО.
Nick Alte
Эксперт С++
1636 / 1008 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
14.03.2010, 10:54 #9
Цитата Сообщение от Day Посмотреть сообщение
Да задолбали меня все эти идеологи!
Тут идеология, там идеология.
Я жить хочу. Я работать хочу. И чтоб жить и работать было удобно.
Идеологии для того и придумывали, чтобы работалось удобно. И придумывали не суровые убелённые сединами теоретики, сидя в башне из слоновой кости, в промежутках между подсчётами ангелов, помещающихся на острие иглы, а опытные умелые программисты, старающиеся облегчить свою жизнь. Как говорят в армии, "уставы пишутся кровью". С идеологиями также - это результат осмысления большого количества практики.
Так что капризничать и заявлять, что противные идеологии скучные и надоели - себе дороже. Особенно если этот проект, который "сдать до мая", потом заставят сопровождать и поддерживать...
Monte-Cristo
2788 / 1374 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
14.03.2010, 11:38 #10
Цитата Сообщение от Day Посмотреть сообщение
Я жить хочу.
Это проблематично...

Цитата Сообщение от Day Посмотреть сообщение
Я работать хочу.
Если не будешь придерживаться концепции ООП, а делать так, как хочется тебе, то боюсь, работы тебе не видать..
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
13.06.2013, 14:10 #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, то не упоминать такое звание вообще, так как оно ситуацию не проясняет.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.06.2013, 14:10
Привет! Вот еще темы с ответами:

Аналог GET в js - JavaScript
<input type="hidden" name="qq" value = <?php echo $_GET?> /> Скрипту передается что типа такого script.php?q=1. Но в заголовке <head> я...

Аналог - C++ WinAPI
Господа до этого изучал с++ в консоли,сейчас начал изучать WinApi,подскажите начинающему есть какой нибудь оператор в WinApi ,который...

Аналог RadioGroup - C++ Qt
Ни в книжках, ни в гугле ничего похожего для Qt не нашел.

Аналог TabControl в VB - Visual Basic
Где в vb аналог tabcontrol?Я чтото не догоняю.


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
13.06.2013, 14:10
Ответ Создать тему
Опции темы

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