模板与友元类的问题
有四个类:数据类DD,节点类Node,链表类Chain,链表子类ChainChild
文件DD.h
#ifndef DD_H
#define DD_H
template <class T>
class DD
{
public:
DD(){}
~DD(){};
private:
T st;
};
#endif
文件Node.h
template <class T>
class ChainChild;
template <class T>
class Node
{
friend class ChainChild<T>;
public:
Node(){}
~Node(){}
private:
T data;
};
#endif
文件Chain.h
#ifndef Chain_H
#define Chain_H
#include "Node.h"
#include "DD.h"
template <class T>
class ChainChild;
template <class T>
class Chain
{
friend class ChainChild<T>;
public:
Chain(){}
~Chain(){}
private:
Node<T> c;
};
#endif
文件ChainChild.h
#include "DD.h"
template <class T>
class ChainChild : public Chain< DD<T> > //这里DD<T>改成T就不会有问题
{
public:
ChainChild(){}
~ChainChild(){}
void UseP()
{
c; //这里用到了Chain类和Node类的私有成员
c.data;
}
};
文件main.c
#include "Chain.h"
#include "ChainChild.h"
void main()
{
Chain<int> p;
ChainChild<int> la;
la.UseP();
ChainChild<float> lb;
lb.UseP();
LinkW<float> l2;
l2.UseP();
}
编译时提示ChainChild类不能存取Node类和Chain类的私有成员,该如何改正?