C struct和typdef

C struct和typdef,第1张

概述我不确定标题,因为我不知道它的真正含义. 我试图理解下面链接中的代码. Color Based Particle Filter 我一般都了解程序的功能,但我无法弄清楚“state.h”.这段代码有什么作用?特别是“typedef”,“State_”和“pp”部分对我来说看起来很陌生. 为清楚起见,我会在这里放一些代码. struct StateData;struct State_;typede 我不确定标题,因为我不知道它的真正含义.

我试图理解下面链接中的代码.

Color Based Particle Filter

我一般都了解程序的功能,但我无法弄清楚“state.h”.这段代码有什么作用?特别是“typedef”,“State_”和“pp”部分对我来说看起来很陌生.

为清楚起见,我会在这里放一些代码.

struct StateData;struct State_;typedef State_ (*State)(StateData&);struct State_{    State_( State pp ) : p( pp ) { }    operator State()    {        return p;    }    State p;};State_ state_start(StateData& d);State_ state_selecting(StateData& d);State_ state_initializing(StateData& d);State_ state_tracking(StateData& d);

任何形式的帮助将不胜感激.

解决方法 简明扼要:State是函数pointer的别名.State_是一个包装类,它有一个State成员,可以隐式转换为该State.

需要State_包装器的原因是因为无法表达返回指向同一类型函数的指针的函数.包装器摆脱了自我引用.

逐行:

struct StateData;

类StateData的前向声明.

struct State_;

类State_的前向声明.

typedef State_ (*State)(StateData&);

这个有点棘手.它将State定义为函数指针的类型别名,该函数指针可以指向返回State_并获取StateData&的函数.作为一个论点.在代码片段末尾声明的函数可以由此类型的函数指针指向.

在我看来,考虑到已经存在State_类,所选择的名称非常混乱.虽然我通常反对匈牙利表示法,但我建议总是应用后缀或前缀来表示函数指针,比如state_fun或state_handler或state_callback,

struct State_{

这开始了State_calss的定义.

State_( State pp ) : p( pp ) { }

这定义了类的构造函数.参数是先前定义的函数指针类型.它初始化将很快声明的成员.

operator State()    {        return p;    }

会员功能.更具体地说,用户定义了转换为函数指针类型.

State p;

声明在构造函数中初始化的成员.

};State_ state_start(StateData& d);State_ state_selecting(StateData& d);State_ state_initializing(StateData& d);State_ state_tracking(StateData& d);

免费功能,可由国家指出.

总结

以上是内存溢出为你收集整理的C struct和typdef全部内容,希望文章能够帮你解决C struct和typdef所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1241252.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存