Как объявить класс внутри класса и определить его позже? - PullRequest
1 голос
/ 21 декабря 2011

Мне нравится записывать свои объявления классов в заголовочный файл и определять его позже: либо позже в заголовке, если я хочу, чтобы некоторые вещи могли быть встроенными, либо в cpp.Таким образом, я могу держать свои объявления класса аккуратными и легкими на глаз.

Однако я хочу создать класс внутри класса (итератор)

Можно ли объявить его внутриКласс и определить это позже?Как?

1 Ответ

3 голосов
/ 21 декабря 2011

Да, вам просто нужно добавить имя содержащего класса, а затем оператор разрешения области действия :: и имя внутреннего класса, например,

// A.h

class A {
public:
    class B {
    public:
        B() { }

        void dostuff();
    };

    A() { }

    void doStuff();
};

// A.cpp

void A::doStuff() {
    // stuff
}

void A::B::doStuff() {
    // stuff
}

A a;
a.doStuff();

A::B b;
b.doStuff();

Нет (практического) ограничения на количество вложенных классов, которые вы можете иметь, и вы просто продолжаете добавлять ::, чтобы идти дальше и дальше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...