Шаблоны C ++ и объявления внешних функций - PullRequest
0 голосов
/ 12 декабря 2008

У меня есть это:

template <typename T>
class myList
{
    ...
    class myIterator
    {
        ...
        T& operator*();
    }
}
...
template<typename T>
T& myList<T>::myIterator::operator*()
{
    ...
}

Это дает мне следующую ошибку: "ожидаемый инициализатор перед '&' токеном". Что именно я должен делать? Я уже пытался добавить "template myList :: myIterator" перед этим, но это не сработало.

Ответы [ 2 ]

3 голосов
/ 12 декабря 2008

Как насчет точек с запятой и публичных символов:

template <typename T>
class myList
{
public:
    class myIterator
    {
    public:
        T& operator*();
    };
};
0 голосов
/ 13 декабря 2008

Компиляция Fine:
Если вы хотите опубликовать код, он должен быть таким же простым, как и передаваемым, НО он все равно должен быть компилируемым. Если вы что-то исключите, то, вероятно, удалите реальную ошибку, которую вы хотите исправить, и люди здесь действительно найдут проблемы, если вы покажете людям код.

В этой ситуации мы можем записать только код, который вы удалили.

template <typename T>
class myList
{
    public:
    class myIterator
    {
        public:
        T& operator*();
    };
};

template<typename T>
T& myList<T>::myIterator::operator*()
{
    static T    x;
    return x;
}

int main()
{
    myList<int>             a;
    myList<int>::myIterator b;
    int&                    c= *b;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...