yorool_gui

Странные грабли в C++

Наблюдал сейчас такое:

Файл a.cpp:

struct Foo {
 void foo() { cout << "A"; }
}

Файл b.cpp

struct Foo {
 void foo() { cout << "B\n"; }
}

void f() {
 Foo q;
 q.foo();
}

При вызове f() выдается "A". Какого хрена?

Прямо в таком виде пока не проверял, это наблюдается на более сложном коде. Но суть такова.

Update: спасибо http://motorist-nn.livejournal.com/ и https://ilya-314.livejournal.com/ — лечится анонимным namespace вокруг каждого Foo. Но все равно жопа — если про такое не знать, можно много огрести.

Error

Anonymous comments are disabled in this journal

default userpic

Your reply will be screened

Your IP address will be recorded