Хорошо, когда ПАРЕНЬ1 умеет убеждать людей в чём угодно; плохо, когда в том же самом он способен убедить себя. Да-да, курение — это не привычка, он может бросить в любой момент, просто это глупо и бессмысленно. Только почему-то стоило взять у него зажигалку и отлучиться на полчаса2, как начинаются попытки прикуривания от плитки и тому подобное. На это смотреть, конечно, не настолько страшно, как на небритых матерящихся девственников, шутящих про секс, но всё равно получается как-то не очень.
Ещё очень плохо программировать на C++. Вот, например, смотрите. У меня есть метод, ресамплящий некоторое изображение до указанного размера, причём, если в качестве одного из измерений передать -1, оно будет пропорционально подогнано под другое:
uint8_t *MovieThumbnail::getRGBThumbnail(int &width, int &height) { if (width == -1) { width = (int)((float)_avFormatContext->streams[_videoIndex]->codec->width * ((float)height / (float)_avFormatContext->streams[_videoIndex]->codec->height)); } else if (height == -1) { height = (int)((float)_avFormatContext->streams[_videoIndex]->codec->height * ((float)width / (float)_avFormatContext->streams[_videoIndex]->codec->width)); } // А тут ещё страшнее, да-да, там ещё сверху extern "C" { }
А вот так я его хочу (а почему бы и нет?) использовать:
int width = 400, height = -1; QImage img(movie.getRGBThumbnail(width, height), width, height, QImage::Format_RGB32);
Как вы думаете, какое значение height уходит конструктору QImage? Вопрос на самом деле риторический — если уж я об этом пишу, то очевидно, что туда уходит -1. В то же время даже такой пролетарский язык как PHP честно делает то, о чём его попросят:
function movie_getRGBThumbnail(&$width, &$height) { $height = 200; } function QImage_img($RGBBitmap, $width, $height) { printf("Width = %d\nHeight = %d\n", $width, $height); } $width = 400; $height = 300; QImage_img(movie_getRGBThumbnail($width, $height), $width, $height); // Width = 400 // Height = 200
Кстати, в воспетом Пушкиным и Достоевским3 пайтоне4 передачи по ссылке как таковой вообще нет. В фичреквесте 2003 года один из разработчиков умело отнекивается безжизненным примером, предлагая записывать:
function f(&a):
if (a > 10) then a = 10
return (a*2)
var = 20
result = f(var)как
def f(a): if a > 10: a = 10 return a, a*2 var = 20 var, result = f(var)
Окончательно убеждаясь в том, что переоценённый набор имитирующих ООП макрорасширений к имитирующим язык высокого уровня макрорасширениям к ассемблеру не позволяет мне писать компактный код, раскопипащиваю:
MovieThumbnail::MovieThumbnail() { _initAv(); _videoIndex = -1; _frameAllocated = false; } MovieThumbnail::MovieThumbnail(const char *movieFile) { MovieThumbnail(); loadFile(movieFile); } MovieThumbnail::MovieThumbnail(const char *movieFile, int width, int height) { MovieThumbnail(movieFile); setSize(width, height); }
И снова оказываюсь неправ: g++ ругается на третий конструктор фразой, на которую гугл ничего релевантнее файла-перевода g++ не выдаёт. Удалив его и вызывая второй, получаю ошибку сегментации — первый так и не был вызван.
*А где отчёт о затулинка-пати?


Добавлено через 20 минут
А, да, на счет указателей в Python'е. В сях их основная задача - возвращение аргументов из функций. В питоне же я не вижу в них смысла, учитывая, что в нем можно возвращать несколько значений из функции в виде кортежа.
В питоне же я не вижу в них смысла, учитывая, что в нем можно возвращать несколько значений из функции в виде кортежа.http://www.boost.org/doc/libs/1_39_0/libs/tuple/doc/tuple_users_guide.html

http://www.boost.org/doc/libs/1_39_0/libs/tuple/doc/tuple_users_guide.html

Я обычно в таких случаях создавал массив и возвращал указатель на него
В питоне же я не вижу в них смысла, учитывая, что в нем можно возвращать несколько значений из функции в виде кортежа.И ещё раз: здесь как раз тот случай, когда смысл в них всё-таки есть.
Добавлено через 1 минуту
Кстати, в C++ и без всякого буста можно кортеж: вкладывать друг в друга std::pair
Какая разница, один чёрт код беспонтовый получается
Доступные тэги: <b>, <i>, <s>, <u>, <a href="">, <img src="" /> (загрузить), <pre>, <quote>
- themylogin › Самое дорогое в жизни 20 мая, 19:47
- potomushto › Am I not always be wanting this? (x8) 20 мая, 16:38
- anonymous › Написание «не» с различными частями речи 16 мая, 16:06
- anonymous › A Tragedy in the Air 15 мая, 18:24
- themylogin › Итоги 2011 15 мая, 12:10
- themylogin › На гелике езжу 13 мая, 16:24
- anonymous › Waking up at ten 13 мая, 13:16
- themylogin › Жук 12 мая, 11:55
- themylogin › Давайте шутки из твиттера продолжим развивать здесь 7 мая, 11:03
- anonymous › Шевченко лох 6 мая, 14:02



