c – 我可以从另一个函数中初始化静态成员吗​​?

c – 我可以从另一个函数中初始化静态成员吗​​?,第1张

概述结构中有一个静态成员,因为它在析构函数中是必需的. struct Form{ // ... ~Form() { // access World here } static btDynamicsWorld *World;}; 有没有办法从另一个函数中初始化这个静态成员? void ModulePhysics::Init(){ // 结构中有一个静态成员,因为它在析构函数中是必需的.

struct Form{    // ...    ~Form()    {        // access World here    }    static btDynamicsWorld *World;};

有没有办法从另一个函数中初始化这个静态成员?

voID ModulePhysics::Init(){    // ...    btDynamicsWorld *Form::World = /* ... */;}

我当前的代码导致这两个编译器错误.

Error 1 error C2655: ‘Form::World’ : deFinition or redeclaration illegal in current scope

Error 2 error C2086: ‘btDynamicsWorld *Form::World’ : redeFinition

解决方法 不,你不能.但是您可以将其初始化为NulL,并且在函数中,如果它为NulL,则执行实际初始化.

编辑:提供一个示例:

voID ModulePhysics::Init(){    // ...    if(Form::World == NulL)    {        // The real initialization    }}

某处,在文件范围内(在C文件中,而不是在标题中!):

btDynamicsWorld* Form::World = NulL;
总结

以上是内存溢出为你收集整理的c – 我可以从另一个函数中初始化静态成员吗​​?全部内容,希望文章能够帮你解决c – 我可以从另一个函数中初始化静态成员吗​​?所遇到的程序开发问题。

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

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

原文地址: http://outofmemory.cn/langs/1215177.html

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

发表评论

登录后才能评论

评论列表(0条)

保存