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

结构体中包含结构体解决思路

2012-03-30 
结构体中包含结构体在一个结构提里面有声明的一个结构体,并定义了变量,如下:#define MAX_NB_OF_FRONTENDS_

结构体中包含结构体
在一个结构提里面有声明的一个结构体,并定义了变量,如下:
#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) 这样你应该懂得

热点排行