Учим C++ за 21 день всем чиочаном. Можно показывать крутой или страшный код, просить помочь с лабами и контрольными, помогать другим, а главное - много кодить. Пополняемый список полезностей тут: https://docs.google.com/document/d/1rPPbiViiLSR2PlPnQWpZyk9Sz6-J7ucyM7HR6wvsYKk/edit?usp=sharing
Привет, ты ведь знаешь много компиляторов c++? Я хочу наконец-то слезть со своего c++ Builder 6 и перейти на что-нибудь современное. Работаю я с OpenGL-графикой и обработкой огромных массивов данных, а требования у меня примерно такие: Венда, да. Кроссплатформенность приветствуется, но не обязательна. Бесплатное и свободное ПО. Продавать программу не собираюсь, но всё равно не хочется когда-нибудь начать париться с лицензиями. Поддержка 64-бит (хочется спокойно загружать в программу файлы без ограничения на размер). Желательно наличие конструктора форм. Хотя в крайнем случае те же кнопочки и бегунки проще будет написать на чистом OpenGL'е. Немного ознакомлен с MS Visual C++ и Qt, но переходить не спешу. Студия пугает привязкой к .net и несвободной лицензией, по поводу Qt не знаю, подходит ли он. В общем, очень прошу, подскажите мне что-нибудь подходящее, или убедите сделать выбор в пользу Visual Studio или Qt. Заранее спасибо. Первый раз в dev, местных традиций не знаю. Если задел чьи-то чувства — прошу прощения.
Если хочешь рисовать формочки для C++, думаю нужно выбрать Qt. У microsoft, afaik, сейчас все gui тулкиты на .NET, а managed c++ - это недоразумение. Из свободных компиляторов, собирающих Qt, есть g++ и clang. Насколько хорош clang, я не знаю, icc хватает.
>>8274 Автобусну рыжую мадоку. QT Builder, наверное, будет идеальным вариантом. Только, то, что ты называешь "компилятор" на самом деле называется Integrated Development Environment.
>>8276 QT Creator. http://qt.digia.com/Product/Developer-Tools/
>>8274 >>8276 >>8277 Спасибо. Значит, всё-таки qt. Попробуем-с.
А я плюсану Visual Studio. И Visual Assist к ней. Все-таки стандарт разработки под венду, от ее же производителя. Хотя WinForms и привязан к .NETу и managed коду, практика показала, что довольно легко сделать гуй в управляемом классе, а всю логику вынести в набор неуправляемых, написанных уже классическим способом классов - это еще и приучает использовать шаблон MVC:3 Раз уж речь зашла про OpenGL, то можно вместо системного гуя использовать glfw + CEGui, например, чтобы формочки были красивыми и быстрыми(и кроссплатформенными, кстати). Стивы, а поясните по QT: там используется свой компилятор, gcc, или микрософтовский? (при разработке под венду, естейственно) И еще, воспользовавшись тредом, задам вопрос ОПа, только для линукса, так как мало с ним опыта имел - какую IDE посоветуете и почему?
>>8282 > А я плюсану Visual Studio. Там уже появилась система сборки? >там используется свой компилятор, gcc, или микрософтовский? Можно использовать и mingw и msvc. В обоих случаях в процесс сборки включается некий дополнительный этап кодогенерации. > какую IDE посоветуете и почему Из юзабельных есть eclipse и QtCreator. Мне достаточно vim и cmake.
>>8282 > практика показала, что довольно легко сделать гуй в управляемом классе Ох уж эти практики. C++ и так один из самых уродских языков, а managed - это вообще выкидыш-мутант. И находятся люди, которые на этом пишут и просят ещё.
Голосую за Qt. Qt-няша
> Работаю я с OpenGL-графикой и обработкой огромных массивов данных > наличие конструктора форм Выкинь из головы этот быдлопринцип привязывать главный алгоритм к гуям, сходи к венеролгу и прям так и скажи, «<имярек> подцепил билдер, что делать?» > кнопочки и бегунки проще будет написать на чистом OpenGL'е. Так ты формочки лепишь или огромные массивы данных обрабатываешь, я не пойму? > В общем, очень прошу, подскажите мне что-нибудь 1. Отдели в своём мозгу компилятор и библиотеки от IDE; 2. gcc @ icc — вот твой выбор (у тебя же не амд?); 3. Забей на поддержку 64 бит. Даже Firefox дропнул поддерживать x86_64 сборки для венды, потому что тот пиздец, что там творится, не поддаётся описанию. По хорошему, чтобы открывать файл, используется вызов к операционной системе, и все языковые fopen() и ей подобные — лишь обёртки над системными вызовами. Соот-но если ось и/или её ФС не поддерживает оперативку и/или файлы на диске объёмом 4 GiB, ты с этим ничего не поделаешь; 4. Qt — жирный неповоротливый фреймворк для рюшечек. Я понимаю, почему ты хочешь взять именно это (сам такой был лет пять-шесть назад), но за то, где ты собираешься его применять, надо бить по щщам. 5. Есть полно других IDE, фреймворков и просто библиотек, начни с малого, я бы советовал попробовать писать интерфейсы на gtk2, не для того, чтоб потом этим зарабатывать, хотя это возможно, а для того, чтобы понять, как оно должно выглядеть без мегабайтов ненужного. А ещё есть WxWidgets и Code::Blocks например; 6. Вообще, никакой IDE не нужно, есть емакс. >>8283 > Из юзабельных есть eclipse и QtCreator Ты ещё NetBeans приплети, который жрёт по 700 метров на крохотный проект, падает по два раза в сутки, и при этом не имеет функции автосохранения из коробки.
>>8287 > Вообще, никакой IDE не нужно, есть емакс. > емакс. А туда уже добавили текстовый редактор?
>>8288
>>8287 >привязывать главный алгоритм к гуям ОП похоже что-то визуализирует. Как ты собираешься отвязать алгоритм визуализации от гуёв? > Qt — жирный неповоротливый фреймворк для рюшечек. ОП собирается использовать OpenGL. Лучшей интеграции с OpenGL нет ни у одного другого тулкита, кроме каких-нибудь CEGUI/MyGUI. Почитай на досуге про QGL. >есть емакс. Этот раздутый комбайн в свою очередь не нужен, поскольку есть vim. >Ты ещё NetBeans приплети "Женский" аргумент. См. "Двенадцать приемов литературной полемики", пункт 7.
ОП на связи. Моя задача — обсчитывать и сравнивать огромные файлы, а также визуализировать результаты в реальном времени. Данные общим объёмом превышают 32-битное ограничение. Есть решение хранить всё на диске, строить оптимизацию и держать в памяти только то, что нужно для непосредственной обработки, но это и реализовывать будет неудобно, и жёсткий диск захлёбывается. Скорее всего, в таком случае работа в реальном времени невозможна. Гуи мне определённо нужно, даже если его придётся «рисовать» самому, в окне OpenGL. Не проще ли использовать готовое решение? Протестировал 32-битный Qt. Выглядит красиво, изящно. Очень многого не знаю, куча времени уйдёт на переучивание (пришлось искать в мануалах даже такие элементарные вещи, как преобразование числа в строку и обратно). Сделал простой тест — сколько памяти выделяет программа (на 32-битном Qt): результат не отличается от Builder'а. Протестировал и Visual C++ — там раза в 4 меньше и жуткие тормоза. Таким образом не вижу строгой необходимости пока уходить с Билдера, если не найду чего-то объективно лучшего: с лицензиями меня никто трогать не будет, программу я не продаю. Также обнаружил, что готовой 64-битной Qt под Windows нет, но её можно (!) собрать самому: http://habrahabr.ru/post/79233/ Повторюсь, что местных традиций не знаю. Если здесь ненавидят этот сайт — прошу не бить. Это вообще реально? Игра стоит свеч? Или кто-нибудь может предложить мне свежую идею? Заранее спасибо.
ОП тролль. Зачем тебе какой-то там гуи тулкит если твоя задача - именно визуализация. Будь мужиком - используй голый openGL и не выпендривайся.
>>8290 > ОП похоже что-то визуализирует. Неочевидно. > ОП собирается использовать OpenGL. Если ты вдруг соберёшься прыгать в окно, это ничего не скажет о рациональности твоего поступка. > поскольку есть vim. Если на то пошло, ненастраиваемое бибикающее бинарное и ненужно. > "Женский" аргумент. См. "Двенадцать приемов литературной полемики", пункт 7. Иначе говоря, защитить Eclipse, Qt Creator и NetBeans ты не можешь. Ок. >>8291 > а также визуализировать результаты в реальном времени Ты там трёхмерную карту звёздного неба проецируешь или цифорки в огромном списке гоняешь? > но это и реализовывать будет неудобно, и жёсткий диск захлёбывается. Естессно захлёбывается, если ты пытаешься моментально прогнать через него пару гигабайт. Померяй ему среднюю пропускную способность каким-нибудь hdparm и поймёшь сколько реально он может считать в секунду. После подгрузки основного можно догрузить про запас ещё плюс-минус сколько-то для плавности. Хотя если заказчик хочет штоббыстромнетут, требуй от них систему, на которой можно было бы при запуске заталкивать весь каталог в оперативку и в ней уже гонять. Хотя я сомневаюсь, что Оп так сделает. > Таким образом не вижу строгой необходимости пока уходить с Билдера, если не найду чего-то объективно лучшего Как пить дать тормоза билдера и культей упираются в I/O, но культи, если они с gcc, можно было хотя бы подточить под машинку-то если это не 486.
Не могу понять, о чем вы тут трындите, наркоманы. Со старого сибилдера нужно переходить на новый. Собственно, всё.
>>8296 >Со старого сибилдера нужно переходить на новый. Датс мах бой! Как говорится, похрен, что девушка не дышит, если она хорошо выглядит - можно трахать. Борланд уже давно помер, и ембаркадера скорее всего последует его примеру.
>>8298> DOS давно помер, и Windows 7 скорее всего последует его примеру. Пишите под линупс.Логика настоящего программиста.
Под винду есть несколько С++ компиляторов:Из часто используемых - MSVC, icc, MinGWclang под винду пока что не очень жизнеспособен, даже транк.По поводу 64 бит: У меня не было проблем с MSVC вообще, интел тоже работает, но с ним нужно быть аккуратнее: можно попасться на алиасинг и странные баги с -O2, если ОП знает что это такое. Правда это будет что с 32 битами, что с 64. Про мингв и 64 бита я ничего не знаю.По поводу привязки студии к .нету - это ложь и провокации. Если тебе дотнет не нужен, то ты его просто не используешь. Если нужен, то используешь.По поводу системы сборки у мсвц - вообще-то их есть аж 2,5 штуки, если ты не знал.По Qt - своего компилятора там нет - там есть свой препроцессор.
>>8299 >DOS давно помер, и Windows 7 скорее всего последует его примеру Я даже не буду врать, что мне неприятно тебя расстраивать. Вот, посмотри на картинку с тетенькой раздетой. ( последняя версия винды уже 8, а она "немножко" отличается от привычных окошек )
>>8300 Не ложь и не провокации. Будешь писать на винапи - полысеешь и ослепнешь. M$ вроде бы довольно давно намикает, где он видал тех, кто не пишет под .NET.
>>8302А кто заставляет писать тебя на винапи?Есть куча мультиплатформенных фрейморков, MFC тот же. Просто не обязательно лезть в дотнет. А если даже и лезть, то интерфейс куда проще и удобнее писать на C#, благо из дотнета дллки вызываются очень просто и безболезненно.
>>8300 > вообще-то их есть аж 2,5 штуки, если ты не знал. С этого места подробнее. Я слышал про аналог make и видел эту xml-ную непереносимую гадость, адаптированную для мышководства. Аналог CMAKE/SCONS, который бы сам находил пути к библиотекам и инструментам и которым можно было бы управлять скриптами там есть?
>>8309> аналог make> xml-ную непереносимую гадостьну и ещё одна версия онойвот и 2.5 штуки, ты ж сам их знаешь.Алсо, первая штука тоже непереносима же.С библиотеками и прочим в любом случае под виндой придётся страдать, тут делать нечего, увы.
>>8310 Среди тех жопных затычек, что я перечислил, нет ни одной системы сборки. Значит в студия так и не обзавелась этим необходимым инструментом. Окошки-то хоть красивее стали? И да, что там с c++11?
>>8311По поводу автоматического поиска библиотек под виндой - а искать-то их негде. В винде нет /usr/, /usr/local/ и прочего ведь. Как ты в таком хламе будешь искать библиотеки? Для того же cmake эти пути придётся прописывать руками.Алсо, пара библиотек под виндой собираются мсовской nmake, я сам собирад.По поводу С++11 - похуже, чем у clang и gcc, но они движутся вперёд. В последнем CTP появились variadic templates. Вообще, по С++11 статусу есть чудная табличка http://wiki.apache.org/stdcxx/C%2B%2B0xCompilerSupport
>>8319 > По поводу автоматического поиска библиотек под виндой - а искать-то их негде. Я пользовался такой маргинальщиной как waf, так тот умел находить библиотеки CUDA и Qt, узнавая полный путь к nvcc и moc (при условии, что те прописаны в PATH). Boost, конечно, приходилось руками подключать.
>>8321 P.S. Ещё он умеет хитрым образом встраивать себя в студию, заменяя тамошнюю систему сборки.
>>8321CUDA при установке прописывает себя в системные переменные окружения. Qt по-моему тоже. Так что это всё не считается.>>8322А в студии система сборки по-моему вполне выполняет свои цели, если не нужно кросплатформенность. А если нужно, то cmake умеет генерить студийные проекты. Правда я для этого им ни разу не пользовался.
>>8324 > Так что это всё не считается. Так система сборки vs и переменные окружения-то не читает, по крайней мере по умолчанию.
>>8325 Ну так это и вызвано тем, что не предусматривает система стандартных путей для библиотек и стандартных названий переменных окружения. Что, в общем то, не удивительно для системы, в которой изначальный способ распространения программ - бинарники, а не сорцы. С другой стороны, я подозреваю, что и в nix системах придется точно так же страдать, если понадобится установить несколько разных версий библиотеки и использовать разные версии в разных проектах. Точно так же придется положить собранные версии где-нибудь в home и руками тыкать билд-систему туда. Я не специалист по cmake, но беглая поиск не показывает, что в find_package можно указать версию - следовательно, надо указывать путь поиска к установленной библиотеке. Возможно, вышеназванный пример не часто встречается в мелких проектах. Зато в так называемом "энетерпрайз" версии библиотек фиксируются и все пишется и тестируется относительно строго заданного списка. И я всеми руками за то, чтобы прямо указать нужную версию из нужной папки, вместо того, чтобы полагаться на какую-то версию, установленную в системе, которая завтра может обновиться вместе с пачкой всего остального софта в системе. В своей практике использования visual studio, чтобы не повторять у себя на машине этот процесс настройки местоположения зависимостей много раз, я делал один раз property page с путями к библиотеками, сохранял в отдельный файл foo.props и затем подключал его ко всем необходимым конфигурациям всех нуждающихся проектов. Или даже по файлу на каждую отдельльную библиотеку и ее конфигурацию. Возможно, есть более удобный способ. Мне хватало этого. Сборка из консоли/скриптов также возможна. devenv /build выручит отца русской демократии. Сам не использовал, но судя по логам студия вызывает то же самое. Билд-система - штука важная в ide, конечно. Но не самая. Настройка билда пишется один раз. Потом по мере необходимости правится. В больших проектах этим, в идеале, занимается отдельный человек. И если на настройку билда уходит время, сопостовимое на написание самого проекта - проблема не в ide. Просто выбранный инструмент используется не по назначению. И это не проблема молотка, что им очень сложно пилить. Я же нахожу более важным в ide удобство работы с кодом, удобство отладки. И я пока что не видел ничего удобнее связки visual studio/visual assist. Более-менее интеллектуальные дополнения, быстрые преходы и поиск использования очень помогают. И, также, я не видел ничего удобнее для визуальной отладки. В студии легко настроить отображение именно того, что нужно и показывать все это вместе.
>>8325Я для своего проекта, который зависит от BOOST, MPI и ещё некоторого количества всякой математической фигни делаю зависимости в студии (2010, 2012) через переменные окружения. В смысле, укажите пжалст пути, куда вы поставили MPI, куда для бууста сделали b2 install, ну итд.Линукс-билд собирается cmake.> И, также, я не видел ничего удобнее для визуальной отладки. В студии легко настроить отображение именно того, что нужно и показывать все это вместе.*thisОсобенно для С++ отладка в студии лучшая. Для С тоже. Правда надо уметь этой студией пользоваться, большинство фишек отладчика на поверхности не лежат. Настройка визуализации в студии конечно менее гибкая, чем питон в gcc, но ей довольно легко пользоваться. А в 2012 эту штуку даже задокументировали и сделали xml-based конфигурацию.
>>8334 >Что, в общем то, не удивительно для системы, в которой изначальный способ распространения программ - бинарники Бинарных дистрибутивов линукса полно. Source-based - меньшинство. >С другой стороны, я подозреваю, что и в nix системах придется точно так же страдать, если понадобится установить несколько разных версий библиотеки и использовать разные версии в разных проектах. В gentoo с этим проблем вообще нет благодаря системе слотов. В других дистрибутивах несовместимые версии библиотек тоже можно использовать, но более костыльно. > Настройка билда пишется один раз. Переношу я свой проект на новый компьютер или распространяю по сети... > Я же нахожу более важным в ide удобство работы с кодом, удобство отладки. И я пока что не видел ничего удобнее связки visual studio/visual assist. Более-менее интеллектуальные дополнения, быстрые преходы и поиск использования очень помогают. И, также, я не видел ничего удобнее для визуальной отладки. В студии легко настроить отображение именно того, что нужно и показывать все это вместе. Правильно настроенный и обмазанный плагинами vim не менее удобен (дополнение делается clang'ом, получается не хуже VAX). Отладчиком я почти не пользуюсь (тем более для CUDA он работает через раз). В целом, переход на linux был самым счастливым моментом в моей программистской жизни.
>>8343>Особенно для С++ отладка в студии лучшая. Для С тожеНе соглашусь. В эклипсе к gdb довольно приятная морда, студя после нее кажется жутко неудобной и перегруженной.
>>8301 Я ЖУТКО извиняюсь, но когда успела выйти Винда версии 8? Последний раз когда я проверял, выходила только какая-то NT 6.2 _быдлокожу в мсвц, рекомендовать ничего не буду_
>>8360 October 26, 2012 согласно крези-лесбо-ресурсу под названием википедия.
>>8361 Но это же и есть NT 6.2? При чем тут восьмая версия? Если считать все дробные версии, то их больше восьми наберется, а маркетинговое название... Ну это название, не больше того.
>>8362 Извини, я сразу не понял, что тебя интересует не "windows 8", а восьмой по счету релиз. Крези-лесбо-непонимание~ Быть может тебе нужна nt 3.51? Она вышла в крези-лесбо-1995-м году
>>8364 Меня интересует виндовс восьмой версии, упомянутый в посте, на который я сослался, когда спрашивал. Не более того.
>>8395 >Меня интересует виндовс восьмой версии Но ты же сам сказал, что это nt6.2 и что она тебя как раз не интересует. Я запутался.
>>8396 Но там не про нт6.2, там про мифическую восьмую версию. И её малые отличия от предыдущих.
>>8397 Нет, в википедии как раз про nt6.2 (ее кстати еще называют windows 8). Так что ничего мифического в ней нет, ты что-то путаешь.
Морда сдулась. Я надеялся тебя на больше хватит
>>8398 Для слепых - цитирую. Для тупых - обесняю. >последняя версия винды уже 8, а она "немножко" отличается от привычных окошек Явная импликация того что версия-то уже ОГОГО, а всё ничего не меняется. Хотя по факту между всеми мажорными версиями было достаточно много отличий, а последняя мажорная версия - 6. Ня.
>>8400 Да знаю я. Я с тобой заигрывал, а ты взъелся. Фу. >Ня. A в итоге-то не ня
>>8400 Слушай, я дам тебе совет. Если ты не знаешь отличий версии "ядра" от версии "дистрибутива" то не пытайся умничать. Или у тебя дистрибутивы линукса все сплошняком версии 2.x или 3.х? Или может быть весь функционал какой ты используешь тебе дает исключительно "йадро"? > а всё ничего не меняется Меняется, только не там где нужно. Как пример: восьмерка дропнула поддержку некоторых d-linkовских железяк, а поддержка сети в ней лучше не стала. "штатными" средствами раздать через нее интернет в домашней локалке до сих пор подвиг. Виндобыдло такое виндобыдло вобщем.
>>8402 Если тебе это важно, то скажу, что твой пост я прочитал.
>>8415 слив защитан
>>8402> "штатными" средствами раздать через нее интернетНу и кто тут быдло. Может еще про недостатки блокнота с паинтом покукарекаешь?
>>8417 Блокнот вообще-то самая пиздатая программа в поставке (вероятно ее сам бил гейтс писал кровью христианских младенцев-девственниц). А вот паинт действительно говно. Там интерфейс не как в фотошопе и слоев нет.
>>8422 Пайнт в виндовс 7 стал ня и каваии. В нем появилась возможность обрезать по выделению!
>>8422> Блокнот вообще-то самая пиздатая программа в поставке (вероятно ее сам бил гейтс писал кровью христианских младенцев-девственниц).Ты им хоть пользовался? Он же тупо половину файлов не может нормально открыть. То не распознает переводы строк и весь текст в кашу, то не распознает юникод и каждая буква через пробел. Не может в кодировки, в результате любуешься мусором вместо текста. Паинт по сравнению с таким хламом - слепящее совершенство.
Нагуглить не смог. Можно ли сделать friend function, но friend не по отношению к классу, а к другой функции? пощу баян
>>12637 С++ этого напрямую сделать не позволяет, но возможны различные workaround'ы. Например, можно объявить в классе метод как protected, унаследовать от этого класса другой и объявить нужную функцию дружественной уже к унаследованному классу. Кроме того есть интересный passkey-паттерн: http://stackoverflow.com/questions/3220009/is-this-key-oriented-access-protection-pattern-a-known-idiom
friend предоставляет функциям доступ к private и protected членам класса. Для использования не рекомендуется.Теперь объясни чего ты хочешь получить в одной функции от другой (коме как вызвать).
>>12640 Видимо он хочет доступа ко внутренним переменным. И да, это естественно глупость а ОП бака
Ох уж эти иксперты-кукаретики. Простейший пример: операторы сериализации. Скажем, надо сериализовать объект в массив char или что-то подобное. Тут то нам и пригодится доступ из оператора к private-членам сериализуемого класса, т.к. состояние объекта не обязательно полностью доступно извне. (Хинт: оператор - та же функция.) А в крестах это делается элементарно. В Qt это выглядит как-то так: friend QDataStream &operator<< (QDataStream &s, const YourClass &yourObject);
>>12644В этом случае я обычно делаю public метод QDataStream& YourClass::saveToStream(QDataStream &stream) const;и оператор сериализации inline QDataStream& operator<<(QDataStream& stream, const YourClass& obj) {return obj.saveToStream(stream);}В самом операторе постоянно разыменовывать объект для доступа к членам муторно и не правильно.
>>12645 Скажи это авторам Qt. Не могу сказать, что совсем с тобой не согласен, но, на мой взгляд, в том, чтобы плодить лишние методы, тоже есть свои минусы. Разыменование же вообще не проблема, не обязательно имя параметра делать многобуквенным, обозначил как const YourClass &o и все.
>Можно ли сделать friend function, но friend не по отношению к классу, а к другой функции? Пожалуй сохраню это в свою коллекцию идиотизмов. Нет, ну правда, о чем думал оп когда создавал нить? Подумал ли он о том что хочет получить доступ к тому, чего либо еще нет (фунция не вызвана), либо уже нет (функция отработала и удалила свой стекфрэйм вместе со всеми локальными переменными)?
>>12648 Нет, это твой пост надо сохранить.
>>12649 Это почему? Или ты из тех кто мелет языком, не отвечая за сказанное?
>>12650 Потому что хуйню ты полную спизданул. Объявление класса/функции как дружественного означает, что этот класс/функция получают доступ к protected/private членам класса, по отношению к которому они были объявлены дружественными. При чем тут вообще стек, существование чего-то или не-существование? Не к экземпляру класса же идет привязка, а к самому классу. Где у тебя тут несуществующее и удаленное из стека? http://ideone.com/3tBZvo Хоть бы разобрались сначала, прежде чем кукарекать.
Как я вспонмил теперь, у GCC в режиме C есть nested functions. Я только что понял, что я решеине узнал ещё вчера - function object. Класс, у которого есть оператор (). Все переменные определяю в нём, и френдом делаю класс, а не функцию. >>12640 >Теперь объясни чего ты хочешь получить в одной функции от другой (коме как вызвать). Только этого и хочу. Я хочу вынести куски кода в функцию для улучшения организации, но не хочу передавать туда кучу параметров. >>12645 >В самом операторе постоянно разыменовывать объект для доступа к членам муторно и не правильно. О, кстати, а результаты выполнения каких операторов кэшируются? Разыменование кэшируется? >>12650 1) Потому что статиков нафигачу и всё у меня будет. 2) Потому что мфв из анимы. >>12652 >При чем тут вообще стек, существование чего-то или не-существование? >>Можно ли сделать friend function, но friend не по отношению к классу, а к другой функции? А вот при том.
>>12655 >Я хочу вынести куски кода в функцию для улучшения организации Для улучшения читаемости, то есть.
>>12655 >А вот при том. Прости, я жопой читал. Мои извинения.
>>12652 Хотел было в эпитетах написать насколько ты долбишься в глаза, но >>12655-кун ткнул в нужное первым. Да и вообще, высмеивать убогих - зло.
>>12660 А выебываться, когда уже извинились, и того хуже.
>>12655 >1) Потому что статиков нафигачу и всё у меня будет. Так нафигач их вне функции, будь как все начинающие. Ты конечно прав с этим. Но, как по мне, статики в функции являются исключением нежели правилом. А значит их наличие должно обговариваться отдельно >2) Потому что мфв из анимы. Кто? Откуда?
>>12661 >выебываться Этим тут занимался только ты.
>>12662 >Ты конечно прав с этим. Но, как по мне, статики в функции являются исключением нежели правилом. Всё лучше, чем ты думаешь - я объявлю все переменные в function object, которому я делаю друзей. И никаких статиков не будет, это я пошутил так. >>12664 >Этим тут занимался только ты. Голос из-за соседнего столика: "Нет. >>12660 этим тоже занимался, да и >>12648 тоже."
>>12664
>>12670 А не путаешь ли ты провокационную манеру донесения знаний с выебонами? И почему интересно я не должен был называть убогого агрессивного невежду убогим?
Девочки, не ссорьтесь.
>>12673 >И почему интересно я не должен был называть убогого агрессивного невежду убогим? Потому что ты никому ничего не должен, например. Давай, я лучше поверну вопрос другой стороной: твой пост хоть какую-нибудь ценность имеет? Он хотя бы крупинку юмора содержит? >провокационную манеру донесения знаний Кривое формулирование своих мыслей, не преследующее никакую цель, кроме соответствия негласным стандартам вербальной борьбы "кто из нас лох", сегодня именно так назвается? Я запишу. Конкретно мне такое самовыражение претит.
>>12675 >твой пост хоть какую-нибудь ценность имеет? Давай перечитаем часть моего первого пост вместе. Если хочешь, можно даже по слогам. > Подумал ли он о том что хочет получить доступ к тому, чего либо еще нет (фунция не вызвана), либо уже нет (функция отработала и удалила свой стекфрэйм вместе со всеми локальными переменными)? В этом месте я ссылаюсь на явно неправильную постановку вопроса в ОП-посте( friend-овость не к классу, к функции) и уточняю почему именно: данные, которые можно получить "по дружбе" из функции, по факту с большой вероятностью банально не определены. Нет, есть конечно вариант что где-то выше по стеку вызовов уже начала работать(и соответственно еще не завершилась) нужная нам функция... но надежда на такого рода совпадения является маргинальщиной порядками большей нежели использование в функции кучи статиков. Также есть отсылка на конкретный термин - stackframe - зацепившись за который можно найти нужную информацию о процессе вызова функций. В частности о том, где и как обычно размещаются переменные, определенные в функции. Каюсь: мне почему-то показалось что недвусмысленного намека с отсылкой в нужном направлении хватит. В крайнем случае я был готов ответить на возникшие вопросы и уточнить неправильно понятое. Но откровенное хамство, добротно перемешанное с нежеланием нормально прочитать написанное, была для меня неожиданностью я почему-то был лучшего мнения о здешних обитателях. Но видимо они появляются тут намного реже случайных посетителей учебных заведений
>>12676 >Но откровенное хамство, добротно перемешанное с нежеланием нормально прочитать написанное, была для меня неожиданностью я почему-то был лучшего мнения о здешних обитателях. Но видимо они появляются тут намного реже случайных посетителей учебных заведений http://www.youtube.com/watch?v=lkvDPXULSy0
>>12677 Вот не зря я на провокацию пошел. Не зря! Всего лишь, казалось бы, назвал сказанное человеком идиотизмом. Сказанное, не самого человека. И тут такое понеслось. Мне в связи с этим просто до жути интересно: а какого это самоассоциировать себя с любой когда либо сказанной тобой фразой даже на анонимной борде? Может у тебя какие комплексы? Ты не скрывай - мы поможем.
>>12678 Кончай бомбить уже.
>>12679 Бомбишь тут только ты. но ведь все равно же будешь тужиться, доказывая что нет
А могли бы код писать.
>>12680 На мое слово десять твоих. Делай выводы.
Заканчивайте.
ОП здесь. Даже отвечать не хочу на всё это. Два тупака сошлись, хотят доказать друг другу, что один тупее, а в итоге - доказали, что тупые оба. Пока вы вакуум перемещали, я додумался до ещё более простого - сделать класс, в нём определить все переменные, и вызывать метод класса, а дальше методы одного класса могут вызывать друг друга и ничего не передавать друг другу и использовать одни переменные. >>12676 >В этом месте я ссылаюсь на явно неправильную постановку вопроса в ОП-посте( friend-овость не к классу, к функции) и уточняю почему именно: данные, которые можно получить "по дружбе" из функции, по факту с большой вероятностью банально не определены. Мне глубоко фиолетово, что будет, если поделить на ноль сделать френд для функции с нестатическими переменными. Мне нужно дать одно окружение двум функциям.
>>12685 >ОП здесь. А ты никуда и не уходил. Завязывай сайемперсунить чтоли. ну не верю я в то что у такого олуха есть почитатели/воздыхатели, способные вот так вот впрячься за какую-то ничего не значащую для других фигню
>>12695 >ну не верю я в то что у такого олуха есть почитатели/воздыхатели, способные вот так вот впрячься за какую-то ничего не значащую для других фигню Я считаю, что я достаточно прямо выразил свою точку зрения. Сошлись два идиота, один из которых прочитал ОП-пост лучше. Ты не веришь в то, что того, кто обзывается, тоже могут обозвать? Мои посты:>>12637>>12655>>12656>>12670>>12675>>12685>>12699
>>12699 Я не верю в то что кто-то взялся отстаивать позицию, которая имеет значение только для выразившего ее.
>>12700 Ссыку на отстаивание мной чье-то позиции в студию. Что-то я не помню такого. Если ты не заметил, >>12673 отвечает мне и ему отвечаю тоже я.
>>12685 >Мне глубоко фиолетово, что будет, если поделить на ноль сделать френд для функции с нестатическими переменными. какие все умные задним числом. Но спросил то ты именно об этом. А если бы подумал сразу - не спрашивал бы. >Мне нужно дать одно окружение двум функциям. Извини за мой французский, но если тебе изначально надо было именно это, то ты либо тролль, либо дурак.
>>12704 >какие все умные задним числом. Но спросил то ты именно об этом. А если бы подумал сразу - не спрашивал бы. Заднее число? Ну ты и лолка. Давай по-другому. Представь себе, что я спросил не "как сделать френд для функции", а "как сделать френд для класса". И тут ты, такой, говоришь, что класс может быть ещё не создан или уже уничтожен. Вот это новость, прикинь, класс может быть ещё не создан! А уж если он уничтожен, то ваще пипец! >Извини за мой французский, но если тебе изначально надо было именно это, то ты либо тролль, либо дурак. Хоть горшком назови.
>>12707 Ты правда дурак или прикидываешься? Предположим я закрою глаза на то что friend'ить функцией класс - это впринципе единственная возможность что-то заfriend'ить. Вполне себе доходчиво описанная в книгах и статьях. Но >класс не создан Почему ты месишь в одну кучу экземпляр класса и сам класс?
>>12709 Вот, смотри, ты начинаешь догонять до того, что реплика о ещё не созданных или уже истреблённых переменных была не совсем умной.
>>12710 Умность - понятие субъективное. Я же говорил о конкретном факте. Если хочешь доказать мне ложность моего изначального утверждения про stackframe и существование переменных, размещаемых в нем - то вперед. До тех пор я буду называть кошку кошкой, а идиотизм - идиотизмом. Пишу я на самом деле потому что мне интересно, насколько агрессивные и упорные нынче пошли невежды.
>>12711 Есть какая-то причина для того, чотбы называть меня невеждой? Или, если ты до сих пор галлюцинациями страдаешь, вот на это ответь: >>Ссыку на отстаивание мной чье-то позиции в студию. >До тех пор я буду называть кошку кошкой, а идиотизм - идиотизмом. Чья-то (твоя? Не знаю) реплика о ещё не созданных или уже истреблённых переменных и есть идиотизм, давай с этого начнём. А если точнее - формализм в отношении чего-то не имеющего никакой формальности. У GCC есть локальные функции - офигеть, как же быть, если переменные ещё не созданы, а локальная функция уже вызвана. А она, представь себе, не может быть вызвана, если не был вызван предок. Оказывается, никакой дилеммы нет? Функция, представь себе, может выполняться не в одном потоке, то есть её окружений может быть несколько. Вот тебе и экземпляры.
>>12712 >У GCC есть локальные функции Это ты так nested functions обозвал? И тебя не смущает то что они видны исключительно внутри функции, в которой определены?
>>12716 Мне большее и не нужно. Я же писал выше: хочу выделять куски алгоритма в блоки так, чтобы это было читаемо. К примеру: сесть_в_автобус() { подойти_к_двери(); запрыгнуть_на_ступеньку(); //инбифо низкопольные автобусы оплатить_проезд(); } И где-нибудь в конце функции сесть-в_автобус - все определения. Вложенных функциям видны все переменные видные в вызываающем блоке, поэтому им ничего передавать не нужно. Альтернатива - использовать goto и поддерживать правильные метки.