结构体中包含结构体
在一个结构提里面有声明的一个结构体,并定义了变量,如下:
#define MAX_NB_OF_FRONTENDS_IN_CHAIN 5
struct dibChannel
{
uint32_t RF_kHz;
uint32_t bandwidth_kHz;
int chid_to_feid[MAX_NB_OF_FRONTENDS_IN_CHAIN];
struct dibChannelFEInfo
{
uint32_t tune_time_locked;
uint32_t tune_time_data;
uint32_t tune_start_time;
uint32_t tune_time_estimation[2];
uint32_t priv[11];
}fe_info[MAX_NB_OF_FRONTENDS_IN_CHAIN];
}
貌似结构体ibChannelFEInfo的作用域只在结构体dibChannel内部,我想知道有什么办法可以在外部或者在其他文件中使用struct dibChannelFEInfo来定义变量?比如:
struct dibChannelFEInfo *into=channel_frontend_info(ch, fe->id); //ch是指向结构体dibChannel类型的指针,fe是指向另一个结构体类型的指针
struct dibChannelFEInfo * channel_frontend_info(struct dibChannel *ch, int id)
{
return &ch->fe_info[feid_to_chid(ch, id)];
}
这个函数又该怎么实现啊,应该怎么改才行?我是想要返回值是dibChannelFEInfodib类型(准确说应该是dibChannel::dibChannelFEInfo类型,不知道这样表达对不对),以便实现上面的函数调用
求解,大神们帮忙啊!
[解决办法]
下面这样不行么?
- C/C++ code
#include <iostream>using namespace std;struct A{ int a; struct B { double m; }b;};A::B* f(){ A::B* b = new A::B; b->m = 5.5; return b;}int main (){ A::B* b = f(); cout << b->m << endl; delete b;}
[解决办法]
何必那么绕呢,直接返回一个dibChannel*类型就可以访问其中的fe_info成员了吧。
人家这么定义结构体就是为了封装对象吧。
[解决办法]
struct和 class基本是一回事 (struct默认是public) 这样你应该懂得