在类a里面嵌套类b,然后类b里面嵌套了个类c。这个类c的成员如何访问
在类a里面嵌套类b,然后类b里面嵌套了个类c。这个类c的成员怎么访问
template<typename elemtype>
class Mypolm//类a
{
public:
class LinkNode//类b
{
public:
class data//数据项既包含系数又包含指数,用一个类来定义,类c
{
public:
float coef;
int expn;
};
LinkNode *next;
};
typedef LinkNode * NodePointer;
void init();
Mypolm();
virtual ~Mypolm();
Mypolm(const Mypolm<elemtype>& otherL);
Mypolm<elemtype> operator=(Mypolm<elemtype> rightL);
};
template<typename elemtype>
void Mypolm<elemtype>::init()
{
NodePointer p;
NodePointer r;
p=new LinkNode;
float coef_in;
cout<<"coef:"<<endl;
cin>>coef_in;
// p->data.coef=coef_in;
}
这些构造函数什么的都不说了,就是我定义的初始化函数init(),为何老是说这个p->data.coef不可以啊,书上貌似也是这样子来访问的。
我现在没见过类里面套类在套类的。
高人指点一下,怎么访问才不出错。
如果没p->data.coef,这一语句,程序是没错的,我试过了。
------解决方案--------------------
Mypolm::LinkNode::data是一个class,不是一个class object,一个nonstatic member的访问,必须要绑定到一个class object上才行。
在LinkNode里面声明一个data的class object
data d;
这样访问即可:
p->d.coef
template<typename elemtype>
class Mypolm//类a
{
public:
class LinkNode//类b
{
public:
class data//数据项既包含系数又包含指数,用一个类来定义,类c
{
public:
float coef;
int expn;
};
LinkNode *next;
};
typedef LinkNode * NodePointer;
void init();
Mypolm();
virtual ~Mypolm();
Mypolm(const Mypolm<elemtype>& otherL);
Mypolm<elemtype> operator=(Mypolm<elemtype> rightL);
};
template<typename elemtype>
void Mypolm<elemtype>::init()
{
NodePointer p;
NodePointer r;
p=new LinkNode;
float coef_in;
cout<<"coef:"<<endl;
cin>>coef_in;
// p->data.coef=coef_in;
}
这些构造函数什么的都不说了,就是我定义的初始化函数init(),为何老是说这个p->data.coef不可以啊,书上貌似也是这样子来访问的。
我现在没见过类里面套类在套类的。
高人指点一下,怎么访问才不出错。
如果没p->data.coef,这一语句,程序是没错的,我试过了。
------解决方案--------------------
Mypolm::LinkNode::data是一个class,不是一个class object,一个nonstatic member的访问,必须要绑定到一个class object上才行。
在LinkNode里面声明一个data的class object
data d;
这样访问即可:
p->d.coef