это дополнительный вопрос к функции друга в пространстве имен
Если я хочу, чтобы testFunc находился в пространстве имен TestNamespace, но я не хочу, чтобы TestClass также находился в TestNamespace, как я могу объявить их?
1. Это не работает ("ожидаемый неквалифицированный идентификатор перед пространством имен" в строке 2)
class TestClass {
namespace TestNamespace {
friend void testFunc(TestClass &myObj);
};
}
namespace TestNamespace {
void testFunc(TestClass &myObj);
}
2. Но он жалуется, что «TestNamespace:: testFunc (...) должен был быть объявлен внутри« TestNamespace »», когда я это делаю:
class TestClass {
friend void TestNamespace::testFunc(TestClass &myObj);
}
namespace TestNamespace {
void testFunc(TestClass &myObj);
}
3. Вышеприведенный код подходит, если у меня нет «TestNamespace::» в объявлении функции друга в строке 2, но я не уверен, знает ли он, что TestNamespace::testFunc является другом.
Я не знаю, что происходит в любом из этих случаев. Любое понимание также будет высоко оценено. Спасибо!