结构体中包含结构体

zhangtianfu0205 2012-03-25 03:20:21
在一个结构提里面有声明的一个结构体,并定义了变量,如下:
#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类型,不知道这样表达对不对),以便实现上面的函数调用
求解,大神们帮忙啊!





...全文
437 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
mosal 2012-03-26
  • 打赏
  • 举报
回复
struct和 class基本是一回事 (struct默认是public) 这样你应该懂得
cattycat 2012-03-25
  • 打赏
  • 举报
回复
何必那么绕呢,直接返回一个dibChannel*类型就可以访问其中的fe_info成员了吧。
人家这么定义结构体就是为了封装对象吧。
凡心未灭 2012-03-25
  • 打赏
  • 举报
回复
下面这样不行么?

#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;
}

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧