インポートされたオブジェクトクラスを使用しているため、フォーマットはインポートされますか? 同じロジックでは、インポートされたObjectクラスを使用すると、クラスはインポートされません。このコードは、NS1 :: formatとNS3 :: formatのあいまいさをどのように引き起こしますか?
namespace NS1 {
class Object { /* ... */ };
int format(const Object&) { std::cout << "NS1"; }
namespace NS2 {
class Object { /* ... */ };
int format(const Object&) { std::cout << "NS2"; }
}
}
namespace NS3 {
using NS1::Object;
int format(const Object&) { std::cout << "NS3"; }
}
namespace { using namespace NS3; }
void fun(Object b, int i) { int i1 = format(b); }
int main() {
Object b;
fun(b, 0);
}
エラーが発生しますか?あなたはそれを自分で解決しようとしましたか? [尋ねる]を読んだことがありますか? (私も質問があります) –
おそらく[引数依存ルックアップ](http://en.cppreference.com/w/cpp/language/adl)のためですか? – mindriot