Подтвердить что ты не робот

Могу ли я объявить "использование пространства имен" внутри класса С++?

Предположим, что у вас есть класс С++. И там пространство имен, которое должно быть видимым только внутри моего класса. Что для этого нужно сделать?

class SomeClass
{
    using namespace SomeSpace;

public:
    void Method1();
    void Method2();
    void Method3();
};

namespace SomeSpace
{
    /*some code*/
};
4b9b3361

Ответ 1

using namespace X; называется с использованием директивы, и он может отображаться только в пространстве имен и области функций, но не в классе. То, что вы пытаетесь сделать, невозможно в С++. Лучшее, что вы можете сделать, это написать директиву using в пространстве имен этого класса, что может быть нежелательно.

Во-вторых, подумав, анализируя ваши слова,

Предположим, что у вас есть класс С++. И там пространство имен, которое должно быть видимый только внутри моего класса. Что для этого нужно сделать?

Я бы предложил что-то вроде следующего, что я не уверен, что вы хотите.

class A
{
public:
    void Method1();
    void Method2();
    void Method3();

private:

    class B
    {
       //public static functions here, instead of namespace-scope
       // freestanding functions.
       //these functions will be accessible from class A(and its friends, if any) 
       //because B is private to A
    };

};

Ответ 2

Нет, но вы можете сделать это так:

namespace SomeSpace
{
    /*some code*/
};

using namespace SomeSpace;

class SomeClass
{

public:
    void Method1();
    void Method2();
    void Method3();
};

Хотя не рекомендуется применять директиву using namespace в файлах заголовков и часто считаться плохим стилем. Вполне нормально вставить исходный файл (.cpp) вашего класса.