가능한 중복 시작합니다
What's the purpose of a leading “::” in a C++ method call네임 스페이스와 함께 ::에서 C++
This gtest은 예제 코드가 있습니다.
::testing::AssertionResult IsEven(int n) {
if ((n % 2) == 0)
return ::testing::AssertionSuccess();
else
return ::testing::AssertionFailure() << n << " is odd";
}
어떻게 작동합니까? 네임 스페이스가 테스트 중이라면 testing :: AssertionResult가 올바른 사용법입니까?
이렇게하면 'testing'이 다른 네임 스페이스 내의 네임 스페이스가 아니게됩니다. 나는':: testing'을 사용하여 최상위 레벨에서 네임 스페이스'testing'을 사용하고 있다고 확신합니다 (그러나 제 충고는하지 않습니다, 저는 C++ 놈입니다). – dreamlax
범위의 네임 스페이스에 "testing"이라는 중첩 네임 스페이스가 포함 된 경우 발생하는 네임 스페이스 충돌을 방지하기 위해 단항 범위 연산자가 여기에 사용됩니다. 예 : "namespace foo {namespace testing {} class FooTest : public testing :: Test {};}"는 GTest의 테스트 네임 스페이스를 호출하지 않습니다. 대신 foo.testing을 사용합니다. –