Определение класса в пространстве имен

Немного более функциональный и простой в использовании:

function exist(obj)
{
    return (typeof obj !== 'undefined');
}

Функция вернет true , если существует, else false , если не существует .

20
задан 8 March 2009 в 17:03
поделиться

4 ответа

Вы близки, можно передать, объявляют класс в пространстве имен и затем определяют его снаружи, если Вы хотите:

namespace ns {
    class A; // just tell the compiler to expect a class def
}

class ns::A {
    // define here
};

то, Что Вы не можете сделать, определяют класс в пространстве имен без участников и затем определяют класс снова за пределами пространства имен. Это нарушает Одно Правило Определения (или somesuch ерунда).

35
ответ дан 29 November 2019 в 23:37
поделиться

Можно сделать это, но это не действительно больше succint.

namespace ns {
    class A;
}

class ns::A {
};

Или

namespace ns {
    class B;
}

using ns::B;
class B {
};
7
ответ дан 29 November 2019 в 23:37
поделиться

Раздел, который необходимо читать, является этим:

7.3.1.2 членских определения Пространства имен

3 Каждых имени, сначала объявленные в пространстве имен, являются членом того пространства имен. [...]

Примечание термин - объявление, таким образом, D.Shawley (и его пример) корректен.

2
ответ дан 29 November 2019 в 23:37
поделиться

Нет Вы не можете. Для заключения в кавычки стандарта C++ разделите 3.3.5:

имя А, объявленное вне всех именованных или пространств имен без имени (7.3), блоки (6.3), забава (8.3.5), функциональные определения (8.4) и классы (пункт 9), имеет объем глобального пространства имен

, Таким образом, объявление должно быть в блоке пространства имен - определение может, конечно, быть снаружи.

0
ответ дан 29 November 2019 в 23:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: