当前位置:  开发笔记 > 编程语言 > 正文

在C++头文件中声明和定义静态变量?

如何解决《在C++头文件中声明和定义静态变量?》经验,为你挑选了1个好方法。

许多 其他 问题涉及如何通过在头文件中声明变量并在.cpp文件中定义(分配)来分配变量.

我想要做的是不为我的类使用任何.cpp文件,并将所有函数定义为内联(在头文件中).我遇到的问题是如何定义静态成员变量,以便即使.h文件包含在多个编译单元中,我也不会得到"此处首次定义"链接器错误.

如果它完成了工作,我会对预处理器黑客等开放.我只是想避免任何.cpp文件.

如果重要我正在使用GCC.



1> cmaster..:

如果你真的必须避免任何.cpp文件,你可以滥用单例模式:

class Foo {
    public:
        static Bar& getMyStatic() {
            static Bar bar;
            return bar;
        };
};

这是有效的,因为现在变量是函数内部的静态变量,并且static在函数上下文中具有与在类上下文中不同的含义.对于函数,链接器确实识别多个相同的定义并丢弃副本.

但是,当然,我强烈建议不要避免使用.cpp文件:这意味着你需要在一个大块中构建整个程序或至少大部分程序.您所做的每一项更改都需要完全重建,这会显着减慢您的更改 - 编译 - 测试周期.对于可能不是问题的非常小的项目,但它适用于中型到大型项目.

推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有