- 1
- 2
- 3
std::auto_ptr<ItemDesc> desc(new ItemDesc());
...
m_items.insert(desc->m_item->m_name, desc.release());
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+161
std::auto_ptr<ItemDesc> desc(new ItemDesc());
...
m_items.insert(desc->m_item->m_name, desc.release());
Да, я тоже говнокодер. А ведь предупреждали...
+157
struct Event
{
int priority;
bool operator<(Event e) const
{
return e.priority>priority;
}
virtual void operator() () = 0;
};
priority_queue<Event*, deque<Event*> > eventQueue;
template <typename T, void (T::*g)()>
struct TEvent : Event
{
T* parent;
virtual void operator() ()
{
(parent->*g)();
}
TEvent (T* _parent) : parent(_parent){}
};
struct Entity
{
int foo;
void AFunc()
{
cout<<foo;
}
void BFunc()
{
cout<<"Ololo";
}
typedef TEvent<Entity,&Entity::AFunc> someEvent;
Entity(int _foo): foo(_foo){}
void addEvent()
{
eventQueue.push(new someEvent(this));
}
};
int main()
{
Entity foo(10);
foo.addEvent();
(*eventQueue.top())();
return 0;
}
Один из самых сложных и неочевидных способов вывести в консоль число 10.
(Этот код - проверка, будет ли работать прототип велосипедного делегата)
+169
if (s<10)
{
s++;
}
if (s==10)
{
ss++; s=0;
}
if (ss==6 && s==0)
{
m++; ss=0; s=0;
}
if (m==10)
{
mm++; m=0; ss=0; s=0;
}
if (mm==6 && m==0)
{
h++; mm=0; m=0; ss=0; s=0;
}
if (h==10)
{
hh++; h=0; mm=0; m=0; ss=0; s=0;
}
if (hh==2 && s==0)
{
+146
void CDAMN::ControlDAMNAmount(DWORD newValue)
{
if(newValue != 0)
controlDAMNAmount = newValue;
}
DWORD CDAMN::ControlDAMNAmount()
{
return controlDAMNAmount;
}
Автор тот же
Две функции с одним именем. Одна изменяет внутреннее поле (член класса)- другая возвращает его значение. Использовать приставки get_ и set_ недосуг как-то. Да и называть внутренние переменные класса так, чтобы было понятно, что они не глобальные (с приставкой “m_”) тоже облом. Хайтек-шмайтек…
+165
class cSG5DataException ... {
cSG5DataException(CTstatus Status, CTsymbol Error,
CTsymbol SubError, std::string Description, ...)
{
/* форматирование сообщения */
}
/* виртуальный деструктор наличиствует */
};
class cExcKVSDuplicateKey : public cSG5DataException {
/* пусто */
};
/* код */
throw (cExcKVSDuplicateKey*) new cSG5DataException( CT_statusFail,
CT_errorObjectExists,
CT_errorObjectExists,
"cKVSet_STL_map::insert( CTint k, Value& v ), %d is already in the map",k);
вот так хитро народ обходит проблему писания конструкторов. темплейт фактори функцию сделать не догадались. но С-style конверсию типов - пожалуйста. мне честно говоря и сложно то себе представить что это как-то работать может. смена типа поинтера то на тип объекта не влияет.
+175
port.put(0x64, 0xEE);
for(register int r=0;r<0xffff;++r);
port.get(0x64);
port - объект для обращения к портам ввода\вывода компьютера.
for - задержка между обращениями к портам (Оптимизатор С++ её конечно же убирает в релизе программы).
+162
template<const bool Value>
const bool BoolToFunc(void) const
{
return Value;
};
+165
enum TextAlignment
{
ALIGN_LEFT = 0,
ALIGN_RIGHT,
ALIGN_CENTER
};
...
if(m_textAlignment > 0 && maxLineWidth < m_desiredLength)
{
float offsetx = (m_desiredLength - maxLineWidth) / m_textAlignment;
...
}
Выравниваем текст. Универсальненько.
Что будет, если значения в энумке поменяются или добавится, к примеру, justify, никого не волнует.
+177
auto r=disable(reinterpret_cast<void*>(static_cast<Efrag*>(const_cast<Efrig*>(ef))));
Три мудреца в одном тазу
Пустились по морю в грозу.
Будь попрочнее старый таз,
Длиннее был бы мой рассказ.
..............Самуил Маршак
+147
#include <stdio.h>
int main(int t,int _,char*a)
{return!0<t?t<3?main(-79,-13,a+main(-87,1-_,
main(-86, 0, a+1 )+a)):1,t<_?main(t+1, _, a ):3,main ( -94, -27+t, a
)&&t == 2 ?_<13 ?main ( 2, _+1, "%s %d %d\n" ):9:16:t<0?t<-72?main(_,
t,"@n'+,#'/*{}w+/w#cdnr/+,{}r/*de}+,/*{*+,/w{%+,/w#q#n+,/#{l,+,/n{n+\
,/+#n+,/#;#q#n+,/+k#;*+,/'r :'d*'3,}{w+K w'K:'+}e#';dq#'l q#'+d'K#!/\
+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;# ){n\
l]!/n{n#'; r{#w'r nc{nl]'/#{l,+'K {rw' iK{;[{nl]'/w#q#\
n'wk nw' iwk{KK{nl]!/w{%'l##w#' i; :{nl]'/*{q#'ld;r'}{nlwb!/*de}'c \
;;{nl'-{}rw]'/+,}##'*}#nc,',#nw]'/+kd'+e}+;\
#'rdq#w! nr'/ ') }+}{rl#'{n' ')# }'+}##(!!/")
:t<-50?_==*a ?putchar(a[31]):main(-65,_,a+1):main((*a == '/')+t,_,a\
+1 ):0<t?main ( 2, 2 , "%s"):*a=='/'||main(0,main(-61,*a, "!ek;dc \
i@bK'(q)-[w]*%n+r3#l,{}:\nuwloca-O;m .vpbks,fxntdCeghiry"),a+1);}
Консольный вывод этой программы:
On the first day of Christmas my true love gave to me
a partridge in a pear tree.
On the second day of Christmas my true love gave to me
two turtle doves
and a partridge in a pear tree.
...
[Все не вместилось]
...
On the tenth day of Christmas my true love gave to me
ten lords a-leaping,
nine ladies dancing, eight maids a-milking, seven swans a-swimming,
six geese a-laying, five gold rings;
four calling birds, three french hens, two turtle doves
and a partridge in a pear tree.
On the eleventh day of Christmas my true love gave to me
eleven pipers piping, ten lords a-leaping,
nine ladies dancing, eight maids a-milking, seven swans a-swimming,
six geese a-laying, five gold rings;
four calling birds, three french hens, two turtle doves
and a partridge in a pear tree.
On the twelfth day of Christmas my true love gave to me
twelve drummers drumming, eleven pipers piping, ten lords a-leaping,
nine ladies dancing, eight maids a-milking, seven swans a-swimming,
six geese a-laying, five gold rings;
four calling birds, three french hens, two turtle doves
and a partridge in a pear tree.