关于友元类

Joestar 2005-01-18 01:58:59
template<class T>
class ChainNode
{

friend class Chain<T>;/*为什么这句要提示编译错误*/
private:
T data;
ChainNode<T>* link;
};

template<class T>
class Chain
{
public:
Chain(){first=0;}
~Chain();
bool IsEmpty() const
{
return first==0;
}
int Length() const;
bool Find(int k,T& x) const;
int Search(const T& x) const;
Chain<T>& Delete(int k,T& x);
Chain<T>& Insert(int k,const T& x);
void Output(ostream& out) const;
private:
ChainNode<T>* first;
};

定义成这样有什么问题吗?为什么设成模板类就编译不过,而一般的类就可以呢?

另:初来乍到,怎么加分呀?

...全文
80 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
yonyon 2005-01-18
  • 打赏
  • 举报
回复
要先声明呀
看控制台程序加断点好了
hongjun_han 2005-01-18
  • 打赏
  • 举报
回复
前向 声明forward declaration
或干脆 放在前面算了。就不用 forward declaration 了。
Joestar 2005-01-18
  • 打赏
  • 举报
回复
一定要先声明吗?我写在class Chain的后面为啥不行?

C++Builder如何查看Win32 console程序的执行结果,窗口一下就关掉了。

怎么给分
lu1172101275 2005-01-18
  • 打赏
  • 举报
回复
友元类还没声明吧,楼上已经回答了------class Chain;//提前声明
dongyuanzhang 2005-01-18
  • 打赏
  • 举报
回复
是的,应该有前向声明。

多给分就行,尽量了!
kay_zlc 2005-01-18
  • 打赏
  • 举报
回复
//should add forward declaration
template<class T>
class Chain;

template<class T>
class ChainNode
{

friend class Chain<T>;/*为什么这句要提示编译错误*/

64,646

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧