Попытка вернуть итератор с вложенной структурой приводит к ошибке «не имя типа» - PullRequest
1 голос
/ 21 февраля 2011

Я определяю вектор частной структуры внутри класса, а затем пытаюсь получить частную функцию этого класса для возврата итератора.Упрощенный код:

#include <vector>

class A
{
private:
    struct B {
        ...
    };
    std::vector<B> vecB;
    typedef std::vector<B>::iterator BIter;

    BIter FindSomething();
};

BIter A::FindSomething() { ... }

К сожалению, когда я пытаюсь скомпилировать это, я получаю ошибку: 'BIter' does not name a type в последней строке.

1 Ответ

4 голосов
/ 21 февраля 2011

Последняя строка должна быть

A::BIter A::FindSomething() { ... }

Причина в том, что BIter является внутренним по отношению к классу A, а когда компилятор получает определение BIter A::FindSomething, контекст (A class) не был установлен для возвращаемого типа, поэтому вы должны полностью его квалифицировать.

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