"using"キーワードについて混乱したことがあります。クラスまたは構造体を使用する場合、そのクラスまたは構造体を引数とする同じ名前空間内の関数を使用する必要はありません。以下のコードのように。C++では "using"キーワードが正確に何をしますか?
namespace A
{
struct testData
{
int x;
};
int testFunc(testData data)
{
return data.x;
}
}
#include <cstdio>;
using A::testData;
int main()
{
testData test = { 1 };
printf("%d", testFunc(test));
return 0;
}
私は私だけTESTDATAのために「使用」キーワードを使用するので、私はtestFunc()を使用することを許されるべきではないと思いました。しかし、これらのコードは正常に動作します。
なぜこのように動作するのか教えてください。
[引数依存ルックアップ(http://en.cppreference.com/w/cpp/language/adl)。 – BoBTFish
@BoBTFishわかりました。どうもありがとう。 –