это дополнительный вопрос к функции друга в пространстве имен
Если я хочу, чтобы 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 является другом.
Я не знаю, что происходит в любом из этих случаев. Любое понимание будет высоко ценится тоже. Спасибо!