首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

还是模版有关问题!

2012-02-17 
还是模版问题!!!c++primer4thp553template classTclassAtemplate classTclassB{friendclassA T fr

还是模版问题!!!
c++   primer   4th   p553  

template <class   T>   class   A;

template <class   T>   class   B
{
      friend   class   A <T> ;
      friend   class   E <T> ;
};

如果没有告诉编译器该友元是一个模版,则编译器认为该友元是一个普通非模版类或非模版函数。

我想问的是,编译器如何把E当成一个普通非模板类呢?

[解决办法]
如果你这么写:
template <class T> class B
{
friend class A;
};

那么编译器认为有一个普通类叫做A,如果你没有定义这样的类,那你就该碰到编译错误了
你定义了A <T> 也没有用
[解决办法]
你此处写的是friend class E <T> ;,这就说明E一定是一个模版类,而且E与A的友元关系是绑定的(bound),即每个T所对应的E和A是友元关系,不同的T对应的E和A不是友元关系。

PS:有关friend和template的地方,是比较麻烦的地方,有一些语法在各个编译器之间有不同的解释,而且好像差的还很多,所以不要太过认真,否则就专牛角尖儿了。

热点排行