C ++模板和外部函数声明

时间:2008-12-12 20:14:23

标签: c++ templates

我有这个:

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

这给了我以下错误:“'&amp;'之前的预期初始值设定项令牌”。我该怎么做?我之前已经尝试过添加“template myList :: myIterator”,但这不起作用。

2 个答案:

答案 0 :(得分:3)

一些分号和公众怎么样:

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

答案 1 :(得分:0)

编译好:
如果你想发布代码,它应该像passable一样简单,但它仍然应该是可编译的。如果你删除的东西将是nilly然后你可能会删除你想要修复的真正的错误,如果你向人们展示代码,这里的人真的善于发现问题。

在这种情况下,我们只能将其删除到您已删除的某些代码。

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;
}