declaration of template parameter ‘T’ shadows template parameter 错误

在《数据结构、算法与应用(C++语言描述)》,第三章栈的链式实现代码,运行不成功,出现 declaration of template parameter 'T' shadows template parameter 错误。

template<typename T>
class LinkNode
{
    template <typename T> 
    friend class LinkStack;
    public:
        LinkNode()
        {
            next=NULL;
        }
    private:
        T data;
        LinkNode<T> *next;
};

template <typename T>
class LinkStack
{
    public:
        LinkStack();
        ~LinkStack();
        bool IsEmpty()const;
        bool Push(const T&x);
        bool Top(T&x);
        bool Pop(T&x);
        void OutPut(ostream &out)const;
    private:
        LinkNode<T> *top;   //栈顶指针
        int size;           //栈中元素个数
};

主要错误在class LinkNode中,因为同时出现的两个template,而这两个template对应不两个同的类,它们应该是不一样的。

把LinkNode类的T改为U就可以了,注意:友元类的T不用改。
更改代码如下:

template<typename U>
class LinkNode
{
    //注意这里的T不用改
    template <typename T> 
    friend class LinkStack;
    public:
        LinkNode()
        {
            next=NULL;
        }
    private:
        U data;
        LinkNode<U> *next;
};


template <typename T>
class LinkStack
{
    public:
        LinkStack();
        ~LinkStack();
        bool IsEmpty()const;
        bool Push(const T&x);
        bool Top(T&x);
        bool Pop(T&x);
        void OutPut(ostream &out)const;
    private:
        LinkNode<T> *top;   //栈顶指针
        int size;           //栈中元素个数
};

原文链接: https://www.cnblogs.com/heitaiheizi/p/16042277.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    declaration of template parameter 'T' shadows template parameter 错误

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/188363

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月12日 下午2:10
下一篇 2023年2月12日 下午2:11

相关推荐