- 1
- 2
- 3
bool Buffer::ReadData(const QByteArray &array){
return this->ReadData((char*)array.constData(), array.size());
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+998
bool Buffer::ReadData(const QByteArray &array){
return this->ReadData((char*)array.constData(), array.size());
}
Без комментариев
0_o
ctm 06.02.2012 09:01 # 0
2. char* и ByteArray
3. вопрос еще, что readdata(char*, int) делает.
defecate-plusplus 06.02.2012 09:27 # +1
но array - константный, даже метод constData какбе намекает
ctm 07.02.2012 07:07 # 0
честно говоря, я бы назвал ReadFromBuffer, чтобы даже в конце рабочего дня у нового разработчика не возник вопрос: "Откуда и куда читается?"
ir4y 06.02.2012 09:27 # 0
Читает данные в array, количеством не более count,
в случае успеха возвращает true
в случае ошибки false
defecate-plusplus 06.02.2012 09:29 # +4
неплохо бы возвращать сколько на самом деле было прочитано
ir4y 06.02.2012 09:28 # 0
Иначе непонятно где методы, а где функции не из класса.
defecate-plusplus 06.02.2012 09:43 # 0
однако "this->" у тебя иногда насильно затребует гцц
http://govnokod.ru/8820#comment125273
Dr_Offset 06.02.2012 12:12 # 0
defecate-plusplus 06.02.2012 13:55 # +1
Как я тогда показал в ссылке на ideone (http://ideone.com/VaMKR), можно добиваться очень неожиданных результатов.
Логика этого правила понятна - когда я пишу шаблонную функцию t<...>() и использую в нем функцию f(), я знаю какую функцию f() я имею в виду, и компилятор обязан знать. В будущем, когда t будет инстанциирована, компилятор не позволит вызвать иную, более локально определенную, f().
Но вот кое-кому было лень в это правило прописать другой подход, когда описывается метод класса, который сам наследуется от шаблонного класса - что, если у нас внезапно обнаружится отнаследованный подходящий метод f() у базового класса? Может стоит, все же, взять его? Более того, что, если глобально определенных функций с аналогичной сигнатурой даже нет? Гцц выдаст ошибку "поставь this->, дружок, или я так не играю". А вот студийному компилятору не сложно работать не по стандарту, а по здравому смыслу - если программист желает именно вызвать не_метод, ему будет не сложно написать ::f() (тем более, что это действительно редкий случай), в противном - не нужно его напрягать с this-> на каждый чих - ведь наследоваться от somebase<T> и использовать его методы приходится гораздо, гораздо, гораздо чаще.
И кстати, clang в этом случае на стороне стандарта, т.е. gcc.
ctm 07.02.2012 07:10 # 0
Хотя, вопрос спорный:)
gegMOPO4 13.02.2012 13:33 # 0
Steve_Brown 06.02.2012 10:21 # 0
guest8 09.04.2019 12:38 # −999