相关疑难解决方法(0)

96
推荐指数
6
解决办法
5万
查看次数

查找C++静态初始化顺序问题

我们遇到了静态初始化命令惨败的一些问题,我正在寻找方法来梳理大量代码以找到可能发生的事件.有关如何有效地做到这一点的任何建议?

编辑:我得到了一些关于如何解决静态初始化顺序问题的好答案,但这不是我的问题.我想知道如何查找受此问题影响的对象.在这方面,Evan的答案似乎是迄今为止最好的答案; 我不认为我们可以使用valgrind,但我们可能有可以执行类似功能的内存分析工具.只有在给定构建的初始化顺序错误的情况下才能捕获问题,并且顺序可以随每个构建而改变.也许有一个静态分析工具可以捕捉到这一点.我们的平台是在AIX上运行的IBM XLC/C++编译器.

c++ initialization static-order-fiasco

59
推荐指数
5
解决办法
5万
查看次数

功能切换与功能分支

什么是"功能切换"和"功能分支"以及它们之间的区别是什么?

优缺点都有什么?为什么一个比另一个好?

我在Google上发现了一些关于此问题的文章,我倾向于参加"功能切换"阵营,但我不相信"功能切换"在所有情况下都是更好的选择.

version-control continuous-integration feature-branch featuretoggle

38
推荐指数
3
解决办法
2万
查看次数

使用指针隐藏实现(Pimpl idiom)

是否可能,以实现以下目标:

x.hpp - 许多其他类都包含此文件

class x_impl; //forward declare
class x {
    public:
        //methods...
    private:
        x_impl* impl_;
};
Run Code Online (Sandbox Code Playgroud)

x.cpp - 实现

#include <conrete_x>
typedef concrete_x x_impl;    //obviously this doesn't work
//implementation of methods...
Run Code Online (Sandbox Code Playgroud)

所以基本上,我希望用户包含文件x.hpp,但不知道conrete_x.hpp标头.

由于我concrete_x只能通过指针使用并且它只显示为私有数据成员,因此前向声明应该足以让编译器知道准备多少空间.它看起来很像着名的"pimpl成语".

你能帮帮我吗?

PS.我不想使用它void*并将其投射..

c++ dependencies pimpl-idiom

11
推荐指数
2
解决办法
4431
查看次数