Любой из трех предложенных вами подходов сработает.Дано:
namespace N {
struct S {
int F();
};
}
Вы можете поместить определение в блок пространства имен:
namespace N {
int S::f() { return 42; }
}
Вы можете указать имя члена с именем пространства имен:
int N::S::f() { return 42; }
Или вы можете использовать директиву using (хотя я бы не рекомендовал это):
using namespace N;
int S::f() { return 42; }
Как правило, я бы рекомендовал не использовать директиву using.Что касается двух других (использование блока пространства имен или уточнение имен), я не думаю, что это действительно имеет значение.Я делаю оба в моем коде.