Шаблоны C ++ и объявления внешних функций

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

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

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

12.12.2008 20:14:23
2 ОТВЕТА

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

template <typename T>
class myList
{
public:
    class myIterator
    {
    public:
        T& operator*();
    };
};
3
12.12.2008 20:22:15
Это строит просто отлично для меня (с точкой с запятой). Без точек с запятой я получаю ошибки о точках с запятой, а не о маркере '&'. Возможно код в "..." актуален.
Marcin 12.12.2008 20:52:54
да строит для меня тоже. Я не знаю, что испортилось с кодом OP-.- он должен действительно показать код в ....
Johannes Schaub - litb 12.12.2008 20:54:47
Будьте осторожны с шаблонами, если вы не создаете их экземпляры, не вся семантическая проверка выполняется (потому что без T это невозможно).
Martin York 13.12.2008 02:00:59

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

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

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;
}
0
12.12.2008 22:49:55