草庐IT

初始化OpenStack

全部标签

c++ - 变量的静态初始化失败

我无意中遇到了一个问题。我正在从事的项目突然停止工作。我正在使用Xcode5.1.1(LLVM3.4,clang5.1)。问题是大多数静态变量在启动时不再初始化。我没有更改任何可能导致此问题的内容,但我很想知道可能导致此问题的原因以及可能的解决方法。我说的是简单的情况,例如://File.hclassMyClass{staticstd::vectordata;}//File.cppstd::vectorMyClass::data;通过运行程序,我在尝试向vector添加元素时遇到长度异常,意识到它的大小只是一个垃圾值。这发生在其他文件中的其他静态字段上,没有明显的原因。代码本身不用作库

c++ - 有没有办法仅在实例化特定类模板(特化)时调用初始化函数?

我正在为各种计算功能设计一个包装器。一些底层后端需要在进行任何其他API调用之前调用一些init函数。我可以使用一些在main之前初始化的静态变量,并将其包装在某个函数中,如here所述这样我就可以捕获初始化期间产生的任何错误。我想知道是否有更好的方法来处理这个问题。请注意,永远不会有类模板的实例,因为一切都是typedef或静态成员。 最佳答案 为了解决初始化API仅为某些特化的问题,并且只初始化一次,我会做这样的事情:#includetemplatestructWrapper{//classwhowillbestatically

c++ - 在 C++ 中初始化模板时将函数传递给模板对象

我正在尝试为HashMap编写一个实现,除了iostream、string和cassert之外,我不允许使用stdlib中的任何内容。它需要是通用的,因此填充桶的值可以是任何类型。我为此需要模板,但无法设法以任何方式传递哈希函数。这将是头文件:templateclasshashTable{public:hashTable(intsize){//Createsanemptyvectorofsizeonthetable}define(Valuev){loadsvalueinVector[hashFunction(v)];}...private:Vectorwithalltheelement

c++ - 类 C++ 初始化顺序的静态函数成员中的静态数据成员

我有一个宏,用于将键、值添加到注册表映射。(假设AddToMap位于在其他地方定义的全局静态对象上。)在定义不同的类(某种类的注册表)之后,在代码的不同位置调用AddKey宏。代码分成很多.h和.cc文件,依赖关系复杂。我有以下有效的代码:#defineAddKey(key,val)\namespaceNSP_##key{\classA{\public:\staticboolfoo(){\staticbooldummy=AddToMap(#key,#val);\}\};\staticbooldummy_A=A::foo();\}`我想知道静态变量dummy是如何创建和初始化的。当我使用

c++ - 带有类参数的 std::thread 初始化导致类对象被多次复制

看起来,如果创建一个类的对象,并将其传递给std::thread初始化构造函数,那么类对象的构造和销毁总共有4次之多。我的问题是:你能一步步解释这个程序的输出吗?为什么这个类在这个过程中被构造、复制构造和销毁了这么多次?示例程序:#include#include#include#includeclasssampleClass{public:intx=rand()%100;sampleClass(){std::cout输出是:constructorcalled,x=92copyconstructorcalled,x=36copyconstructorcalled,x=61destruct

c++ - 列表初始化的缩小转换是错误还是只是警告?

这个问题在这里已经有了答案:Whydoesn'tnarrowingconversionusedwithcurly-brace-delimitedinitializercauseanerror?(2个答案)关闭7年前。目前正在自学C++primer5thedition。正文说:Whenusedwithvariablesofbuilt-intype,thisformofinitializationhasoneimportantproperty:Thecompilerwillnotletuslistinitializevariablesofbuilt-intypeiftheinitializ

c++ - 如何在 OpenMP threadprivate 指令中使用对象的直接初始化?

关于this问题其中一个答案引用了OpenMP标准的以下部分:Athreadprivatevariablewithclasstypemusthave:anaccessible,unambiguousdefaultconstructorincaseofdefaultinitializationwithoutagiveninitializer;anaccessible,unambiguousconstructoracceptingthegivenargumentincaseofdirectinitialization;anaccessible,unambiguouscopyconstruc

c++ - 如何使用没有复制构造函数的给定类初始化元组

我有一个要求,需要按如下方式初始化元组。如何创建包含A类对象的元组?#include#includeusingnamespacestd;classA{inta;public:A(constA&)=delete;A(inta):a(a){}};std::tuple&createTuple(A&&a){returnstd::make_tuple(std::forward(a));}intmain(){std::cout(createTuple(std::forward(A(1))));}我不能以任何方式修改A类。 最佳答案 像这样:st

c++ - Uncrustify:初始化列表:以逗号开头

我想通过Uncrustify自动归档以下代码结构:Class(intaArg1,intaArg2,intaArg3):BaseClass(aArg1),iMember1(aArg1),iMember2(aArg2){}我试过Uncrustify版本:0.63:pos_constr_comma=lead_force但它不起作用。我应该设置什么来获得上面的代码? 最佳答案 刚遇到同样的问题。尝试添加这个:nl_constr_init_args=add对我有用。 关于c++-Uncrustif

c++ - 获取默认初始化(非值/零初始化)的 POD 作为右值

#includestructA{intx;};voidfoo(Aa){std::cout是否可以将A类型的右值传递给foo()而无需对其进行值初始化?我们必须使用值初始化还是左值?您可能会问,如果“成本”不超过10纳秒,那么避免进行值初始化有什么意义呢?像这样的情况怎么样:我们正在寻找遗留应用程序中由valgrind的未初始化内存访问引起的错误,并且零不被视为该应用程序的有效值。值初始化将阻止valgrind发现未初始化内存访问的位置。您可能会说打印未初始化的值是一个UB,但我的“真实”用例不限于打印。没有它,我的问题应该仍然有效。 最佳答案