- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
void someMethod(const std::string& name, std::autp_ptr<SomeClass> p);
{
...
std::auto_ptr<SomeClass> p(new SomeClass());
someMethod(p->GetName(), p);
...
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
void someMethod(const std::string& name, std::autp_ptr<SomeClass> p);
{
...
std::auto_ptr<SomeClass> p(new SomeClass());
someMethod(p->GetName(), p);
...
}
Самое забавное, что при определенных условиях оно может работать.
0
class cCar: public GAMEPLAYER::cPlayerRef, public cScrObject,
public IspSetOnParkingPlace<GAMEPLAYER::cCar>,
public IspCheckLoadedState<GAMEPLAYER::cCar>,
// public IspUseInitialPositioning<GAMEPLAYER::cCar>,
public IspSetVelocity<GAMEPLAYER::cCar>,
public IspTracetoPosition<GAMEPLAYER::cCar>,
public IspChangeVehicle<GAMEPLAYER::cCar>,
public IspChasePlayer<GAMEPLAYER::cCar>,
public IspRaceParamsPlayer<GAMEPLAYER::cCar>,
public IcallbackParked<GAMEPLAYER::cCar>,
public ALTERNATIVEK::cstore_this<GAMEPLAYER::cCar>
{ //... дальше не интересно
Вот такой суровый cCar :)
0
void SomeFunction(SomeClass* cls)
{
std::auto_ptr<SomeClass> tmp(cls);
SomeObject.SomeMethod(tmp.release());
}
несколько раз видел такое в разных вариациях (поэтому вместо копи-пасты - абстракция).
смысл сей конструкции упорно ускользает от меня :)
0
void GAMEPLAYER::cCar::abandonCar(GAMEPLAYER::cPlayer* player){
for(unsigned int i=0;i<size();++i){
cBaseAnimManager * bam = get(i);
if(!bam->isCarRider())
continue;
cCarRider* rdr = (cCarRider*)bam;
if(rdr->gScript()==player->gScript()){
delete rdr;
storage.erase(i);
--i;
}
}
}
НЕ time-critical код из некоторой игры
Наблюдаем:
1) непониманием того, зачем нужно наследование
2) плохо пахнущие имена переменных
0
void CExeTuner::ResFill2Tree(uchar *baddr, uchar *addr, TRes *now, int level)
{
int len;
now->size1=*(uword *)(addr+0x0C); now->size2=*(uword *)(addr+0x0E);
if (now->size1+now->size2) now->mas=new TRes * [(now->size1+now->size2)];
ulong long1,long2;
for (int i=0; i<(now->size1+now->size2); i++)
{
now->mas[i]=new TRes;
now->mas[i]->back=now;
now->mas[i]->name=new char [32];
now->mas[i]->mas=NULL; now->mas[i]->data=NULL;
long1=*(ulong *)(addr+0x10+(i<<3));
long2=*(ulong *)(addr+0x14+(i<<3));
if (long1&0x80000000) {
long1&=0x7FFFFFFF;
now->mas[i]->isname=true;
len=*(uword *)(baddr+long1);
now->mas[i]->rname1=new uchar [len*2+2+1];
now->mas[i]->rname1[len*2+2]=0;
memcpy(now->mas[i]->rname1,baddr+long1,len*2+2);
now->mas[i]->name=new char [len+1];
now->mas[i]->name[len]=0;
for (int j=0; j<=len; j++)
now->mas[i]->name[j]=now->mas[i]->rname1[(j+1)*2];
} else {
now->mas[i]->isname=false;
now->mas[i]->rname2=long1;
if (!ResNumToStr(long1,now->mas[i]->name,level)) _itoa(long1,now->mas[i]->name,10);
}
if (long2&0x80000000) {
long2&=0x7FFFFFFF;
now->mas[i]->isdir=true;
ResFill2Tree(baddr, baddr+long2, now->mas[i], level+1);
} else {
now->mas[i]->isdir=false;
now->mas[i]->size1=*(ulong *)(baddr+long2+4);
now->mas[i]->data=new uchar [now->mas[i]->size1];
if ((*(ulong *)(baddr+long2)+now->mas[i]->size1)>(*ExeMain.ResDirAddrOBJ+*ObjMas[ExeMain.ResPosInObj].size))
{ now->mas[i]->data=NULL; now->mas[i]->size1=0;
} else memcpy(now->mas[i]->data,baddr-*ExeMain.ResDirAddrOBJ+*(ulong *)(baddr+long2),now->mas[i]->size1);
}
}
}
Древнющий проект откопал))
Метод извлекает все ресурсы из PE файла в структуру типа дерево))
0
class imgSeq {
public:
CvSeq* faces;
IplImage* img;
IplImage* small_img;
IplImage* gray;
CvMemStorage* storage;
int id;
imgSeq() {
CvSeq* faces = 0;
IplImage* img = 0;
IplImage* small_img = 0;
IplImage* gray =0 ;
CvMemStorage* storage = 0;
id = -1; //unassigned
};
};
Хотя бы id взаправду инициализирует
0
printf("%s","Для выхода из меню нажмите reset.");
Найдено в глубине системной DOS УтиЛИТКИ, естественно не Microsoft'овской.
0
bool mod_lesser ( int elem1, int elem2 ) {
if (elem1 < 0)
elem1 = - elem1;
if (elem2 < 0)
elem2 = - elem2;
return elem1 < elem2;
}
template <class T>
void printVector(const vector<T> &vec);
int _tmain(int argc, _TCHAR* argv[])
{
ostream_iterator <int> output (cout, " ");
vector <int> v1;
vector <int> v2;
vector <int> v3;
int x=0, i=0;
vector<int>::iterator endLocation;
do
{
cout << "Vvedite " << i << "element mnozhestva A: ";
cin >> x;
if (x!=-99999)
{
v1.push_back(x);
i++;
}
else break;
}
while (x!=99999);
i=0; x=0;
do
{
cout << "Vvedite " << i << "element mnozhestva B: ";
cin >> x;
if (x!=-99999)
{
v2.push_back(x);
i++;
}
else break;
}
while (x!=99999);
i=0; x=0;
do
{
cout << "Vvedite " << i << "element mnozhestva C: ";
cin >> x;
if (x!=-99999)
{
v3.push_back(x);
i++;
}
else break;
}
while (x!=99999);
cout << "A = { ";
printVector (v1);
cout << "}";
cout << '\n';
cout << "B = { ";
printVector (v2);
cout << "}";
cout << '\n';
cout << "C = { ";
printVector (v3);
//Выполнение операции A U B
cout << "}";
vector <int> results (v1.size()+v2.size());
cout << '\n';
sort (v1.begin(), v1.end(), mod_lesser);
sort (v2.begin(), v2.end(), mod_lesser);
sort (v3.begin(), v3.end(), mod_lesser);
merge (v1.begin(), v1.end(), v2.begin(), v2.end(), results.begin());
endLocation=unique (results.begin(), results.end());
cout << "A U B = {";
copy (results.begin(), endLocation, output);
cout << "}";
cout << '\n';
sort (results.begin(), results.end(), mod_lesser);
unique (v3.begin(), v3.end());
cout << "(A U B)\\C = {";
set_difference (results.begin(), results.end(), v3.begin(), v3.end(), output);
cout << "}";
cout << '\n';
system ("pause");
return 0;
}
Вот такие крутые программисты сидят в контакте. Особенно радуют три повторяющихся куска кода для ввода вектора и переменная i, единственное предназначение которой - зачем-то плюсоваться в цикле.
0
#define volatile_cast reinterpret_cast
Это кому-то нужно? Зачем? И работает разве? Найденно на просторах Интернета.
0
void funcMir()
{
...
if ( __mir0>5 )
goto vihod;
TMir1 __mir1; // Конструктор не вызывается. (Оператор goto перескакивает через него.)
...
vihod:
...
// Здесь вызывается деструктор для __mir1 при выходе __mir1 из области видимости.
};
Код оригинальный из инета. Комментарии добавил мой друг.