在《数据结构、算法与应用(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
把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】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/188363
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!