ключевое слово "this" в вложенных классах C ++ - PullRequest
0 голосов
/ 02 мая 2018

Если у меня есть следующие вложенные классы:

class foo {
public:
    class bar {
    public:
        int barMethod() const;
    protected:
        int barVar;
    };

protected:
    int fooVar;
};

и затем в .cpp, я могу реализовать barMethod() таким образом?

int foo::bar::barMethod() const {
    return this->fooVar + this->barVar;
}

Что я имею в виду: относится ли ключевое слово this во вложенном классе ко всем классам, находящимся выше по иерархии?

1 Ответ

0 голосов
/ 02 мая 2018

относится ли это ключевое слово во вложенном классе ко всем классам, расположенным выше по иерархии?

Нет, только "текущий" класс. Вложение классов - это в основном лексическая вещь. В отличие от, скажем, в Java, где внутренний класс может быть связан с экземпляром внешнего класса, foo::bar очень похож на любой другой класс, который не является вложенным.

Если вы хотите связать экземпляр bar с экземпляром foo, вам нужно захватить ссылку или указатель на foo в bar.

...