0xd34df00d
14.11.2011 12:21 Azoth_primary
Очень хорошо себе в ногу выстрелил щас.
Был тривиальный геттер, возвращавший некий контейнер по значению. std::for_each (obj→GetList ().begin (), obj→GetList ().end, ...) работало как говно — падало и совершало многовато итераций вообще.
Очевидно, потому, что контейнер, блять, копировался каждый раз, и begin был от одного инстанса контейнера, а end — от другого.
Recommended by:
@dorfe: Пиздец долбоёб-говноюз
так это плюсы говно, или ты хуйню написал?
Это я говно на хуйне написал.
нормальный программист даже на хуйне нормально напишет ;-)
Значит, нормальных программистов на плюсах не бывает )
Я бы назвал не GetList, а AsList(). Очевиднее, что оно новый объект создаст каждый раз.
Ну у меня все геттеры такие, by-value.
ну вообще это не геттеры а говно. или я не понял, что они делают. геттеры достают связанный с этим объектом объект или поле и по-умолчанию таки должны одну и ту же ссылку возвращать. вообще геттеры для того созданы, чтоб ввернуть магию над доступом просто к полю.
Зачем ты оперируешь терминами полей? Оперируй терминами значений. У объекта-сообщения геттер GetName() возвращает строку с именем, а не конст-референс на внутреннее поле. Потому что важна, блять, строка, а где она, что, и как — это детали реализации. Может, она вообще при каждом вызове геттера формируется. Внешний мир это ебать не должно.
ну правильно. данные. ссылка — тоже данные. вот ты меня спроси "ГДЕ МОЙ АНУС", а я тебе не сгенерирую, блять, нового Арца, а просто отвечу "ОН У АРЦА". вот и получается, что ссылка является вполне объектом. но мы не об этом.
в данном случае это не геттер просто, а генератор нового объекта. объект "говно в виде итератора". вот и всё. и не надо геттером называть.
У тебя аналогия некорректная — вопрос «где мой анус» подразумевает, блядь, возврат указателя. Это как если бы метод назывался GetNamePointer (), не знаю.
Не имеет смысл говорить о генерации новых объектов для вещей с открытым публичным copy ctor'ом. В случае с Артсом он должен закрыть свой анус для копирования, обеспечить метод Clone(), если нужно, а так возвращать указатель. Указатель, а не const ref.
если тебе важно приёбываться к словам — оперируй термином "свойство"
Я не приебываюсь к словам, «свойство» и «значение» в твоем смысле все равно разные вещи.
так, давай не отклоняться от оригинального примера, ок. что такое obj, что такое getList или почему он генерируется?
obj — shared_ptr<Message>. GetList возвращает список адресатов — список пар строк. Последний вопрос не понял.
Visual Studio тебе бы в Debug (где включен по дефолту IDL=2) вывалила assert, что iterators mismatch, хаха!
аа, ну тогда да. я думал, что у тебя GetList() просто возвращает объект, который представляет оригинальный obj в виде итерированного списка, а у тебя действительно геттер внешней фигни. короче да, сам лоханулся.
А на кого рассчитано последнее предложение поста? :3
Своего рода inb4 же.
На простых, милых, душевных, провинциальных девушек романтического возраста из какой-нибудь Харьковской глубинки.
Што.
ПРИЗНАНИЕ
дешёвый пикап детектор сработал
Ты ничего не понимаешь в пикапах.
я занимался пикапом дольше чем ты
Хреново быть тобой.
плюсую
Посмотрите, какой бугурт.
лучше, чем писать на плюсах
Смотрим, куда ?
Сказал @kb в плюсотреде среди плюсофагов, ок.
И да, мне нравится, а это главное.
Пикап не нужен, очевидно же. Говно для спемотоксикозненьких задроченных мальчиков, надеящихся на волшебную таблетку.
блеать, то есть а всё что перед этим было у тебя не вызвало сомнений, да? ну ладно.
Че.
просто маленький срыв ковров
Да ничего ведь особенного не было. Лучше вспомнить старый каноничный пример
> list<int> data(istream_iterator<int>(data_file), istream_iterator<int>());
я им всех начинающих плюсофагов пугаю.
сначала думал "ну, вроде все понятно". сейчас засомневался. мне непонятен второй итератор зачем пока что)
Ща, в отдельный постик вынесу.
ждем чистоты API пост
если бы такие озарения посещали всех горе-погромиздов, то у нас бы не было такого обилия глючного софта. Да и венда, авось, была бы юзабельной.
std::foreach — говно, чтд.