一个关于友元函数的问题

kesaihao862 2008-03-11 09:46:30
#include <iostream>
using namespace std;

template <class Type>
class Queue
{
void bar();
};
template <class Type>
class foobar{ };
template <class Type>
class QueueItem {
friend class foobar<Type>;
friend void foo<Type>( QueueItem<Type> );
friend void Queue<Type>::bar();
// ...
};


template <class Type> void foo( QueueItem<Type> );

void main()
{}



看下这段友元的程序,在VC6下,我的目的是想让foo( QueueItem<Type> )成为QueueItem 的友元,可是无论怎么编译都有个声明类或函数先后顺序的问题,这个该怎么解决呢?谢谢
...全文
134 12 打赏 收藏 举报
写回复
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
yifanernei 2008-03-12
  • 打赏
  • 举报
回复

#include <iostream>
using namespace std;

template <class Type>
class Queue
{
void bar();
};

template <class Type>
class foobar{ };

template <class Type>
class QueueItem;

template <class Type> void foo( QueueItem<Type> );

template <class Type>
class QueueItem {
friend class foobar<Type>;
friend void Queue<Type>::bar();
friend void foo( QueueItem<Type> );
};



void main()
{
}


vc6有时的确不怎么样
taodm 2008-03-12
  • 打赏
  • 举报
回复
楼主啊,如果你真看C++ Primer出身,就该知道,不要用VC6这个垃圾货来验证C++代码。
Johnny_de 2008-03-12
  • 打赏
  • 举报
回复
我可以编译的呀,我试过的。
kesaihao862 2008-03-12
  • 打赏
  • 举报
回复
其实这段程序就是我从C++PRIMEE烤过来的
kesaihao862 2008-03-12
  • 打赏
  • 举报
回复
楼上的仍然不对,有谁能给个标准的,可以编译的程序啊,别眼高手低啊,同学们
Johnny_de 2008-03-12
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;

template <class Type>
class Queue
{
void bar();
};

template <class Type>
class foobar{ };

template <class Type>
class QueueItem;

template <class Type> void foo( QueueItem<Type> );

template <class Type>
class QueueItem {
friend class foobar<Type>;
friend void foo<Type>( QueueItem<Type> );
friend void Queue<Type>::bar();
// ...
};
taodm 2008-03-12
  • 打赏
  • 举报
回复
C++ Primer关于模板里声明friend的章节看过了没有?
ssdx 2008-03-12
  • 打赏
  • 举报
回复
vc6不是不支持模板吗???
jieao111 2008-03-12
  • 打赏
  • 举报
回复
换个编译器把。。。
hai040 2008-03-12
  • 打赏
  • 举报
回复
模版友元的语法实在是太复杂了
kesaihao862 2008-03-11
  • 打赏
  • 举报
回复
试了,还是不行.郁闷着继续等待~~~~
abupie 2008-03-11
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;

// 试试看
class QueueItem;
class Queue;


template <class Type>
class Queue
{
void bar();
};
template <class Type>
class foobar{ };
template <class Type>
class QueueItem {
friend class foobar<Type>;
friend void foo<Type>( QueueItem<Type> );
friend void Queue<Type>::bar();
// ...
};


template <class Type> void foo( QueueItem<Type> );

void main()
{}
相关推荐
发帖
C++ 语言

6.3w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
帖子事件
创建了帖子
2008-03-11 09:46
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下