草庐IT

初始化OpenStack

全部标签

c++ - 是否可以只初始化一次 fixture 并在多个测试用例中使用它?

是否可以只初始化一次fixture并在同一测试套件中的多个测试用例中使用它?在下面的示例中,fixture被多次构造和销毁:structF{F():i(0){BOOST_TEST_MESSAGE("setupfixture");}~F(){BOOST_TEST_MESSAGE("teardownfixture");}inti;};BOOST_FIXTURE_TEST_SUITE(s,F)BOOST_AUTO_TEST_CASE(test_case1){BOOST_CHECK(i==1);}BOOST_AUTO_TEST_CASE(test_case2){BOOST_CHECK_EQUA

c++ - 当有一个带有默认参数的构造函数时是否有2次初始化

这个问题在这里已经有了答案:C++Initialisingfieldsdirectlyvsinitialisationlistindefaultconstructor(3个答案)关闭4年前。我的问题是关于在构造函数中也有默认参数的情况下如何初始化带有初始化程序的成员数据。classInputPlay{public:InputPlay(std::strings="test"):_s(s){};private:std::string_s="default";};问题:调用构造时,变量_s是否会进行两次初始化?又名_s将由字符串文字default初始化,然后由构造函数中的默认参数“test”

c++ - 如何使用成员初始化列表来初始化数组?

classA{public:A();private:chara[5];int*ptr;};A::A():a(0),ptr(0){}这样对吗? 最佳答案 在C++03中,您可以对C数组做的唯一明智的事情是对其进行值初始化(在C++11及更高版本中,它可以进行列表初始化)。来自C++03标准,§8.5/7:Anobjectwhoseinitializerisanemptysetofparentheses,i.e.,(),shallbevalue-initialized.从§8.5/5开始:Tovalue-initializeanobje

c++ - 如何在 C++ 对象中初始化数组

看完HowtoinitializeanarrayinC,特别是:Don'toverlooktheobvioussolution,though:intmyArray[10]={5,5,5,5,5,5,5,5,5,5};我试过这样的:#includeclassSomething{private:intmyArray[10];public:Something(){myArray[10]={5,5,5,5,5,5,5,5,5,5};}intShowThingy(intwhat){returnmyArray[what];}~Something(){}};intmain(){SomethingTh

c++ - 从类型 'int&' 的临时类型 'int' 的非常量引用的无效初始化

#includeusingnamespacestd;intfun(int&x){returnx;}intmain(){cout任何人都可以解释错误的原因吗?谢谢 最佳答案 10是一个常量,所以您不能传递对它的引用,只是因为更改常量的整个概念很奇怪。引入引用是为了解决C(和更早的C++)中的一个棘手问题,事实上一切都是按值传递的,如果你想将更改反射(reflect)回调用者,你必须传入一个指针并在函数中取消引用该指针以获取实际变量(用于读取和写入它)。在下一个ISOC标准中,这将是非常重要的好东西。虽然必须使用指针可能会让我们中的一些

c++ - 初始化枚举 C++

我创建了一个名为Types的枚举:enumTypes{Int,Double,String};当我创建一个对象并使用枚举允许值之一对其进行初始化时,出现以下错误:“错误:不允许类型名称”。Typesty=Types.Double;有什么想法吗? 最佳答案 在C++中,有两种不同类型的枚举-作用域枚举和非作用域枚举(前者是在C++11中引入的)。对于无范围的,枚举器的名称直接引入封闭范围。N3337§7.2/10Eachenum-nameandeachunscopedenumeratorisdeclaredinthescopethati

c++ - 如何用一维数组列表初始化二维数组?

如何使用一维数组列表初始化二维数组?voidmain(){inta[]={1,2,3};intb[]={4,5,6};intarray[][3]={a,b};} 最佳答案 C++中的原始数组属于二等公民。它们不能被赋值,也不能被复制,这意味着您不能使用它们来初始化其他数组,并且在大多数情况下它们的名称会退化为指针。LuckyC++11提供了一个解决方案。std::array就像一个原始数组,但它没有缺点。您可以使用它们来构建二维数组,例如std::arrayfoo={1,2,3};std::arraybar={3,4,5};std:

c++ - 为什么类的常量数据成员需要在构造函数中初始化?

我想知道为什么类的常量数据成员需要在构造函数中初始化,为什么不在其他地方初始化?这样做和不这样做的影响是什么?我还看到只有staticconstantintegraldata可以在类内部初始化,而不是数据成员可以在类内部初始化。例如:-假设下面是我的类声明classA{inta;//Thiswecaninitializeattheconstructororwecansetthismemberbycalling"vSet"memberfunctionconstintb;staticconstintc=10;//Thisworksfinepublic:A();~A();voidvSet(i

c++ - 为什么复制初始化是这样的?为什么需要复制构造函数?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:What’sthemotivationbehindhavingcopyanddirectinitializationbehavedifferently?通过复制初始化,我的意思是这样的:structMyStruct{MyStruct(int){}MyStruct(constMyStruct&){}};MyStructs=5;//needs*both*theintandcopyconstructor尽管使用C++编程多年,但我从未意识到上述代码需要复制构造函数(感谢jogojapan)。临时文件总是被省略,因此

c++ - 如何在 fork 上重新初始化 Boost Log 库?

Boost.Logdoesnotsupportfork().这有点令人难以置信,但是ticketcomment描述了一种解决方法:[..]sofornowit'suptouserstoreinitializethelibraryatfork.Youcanusepthread_atforktodosuchreinitialization.因此我的问题是:在fork()之后我究竟该如何重新初始化Boost.Log?非常感谢代码示例。 最佳答案 您必须处理所有接收器,并在pthread_atfork处理程序子进程中重新创建它们。IE。ad