草庐IT

初始化OpenStack

全部标签

c++ - 左值初始化失败

“TheC++ProgrammingLanguage4thEdition”中的一些示例代码让我感到困惑。这是我的测试用例。Envgcc版本4.6.3(Debian4.6.3-14+rpi1)with-std=c++0x代码1stringvar{"Cambridge"};string&r1{var};编译失败代码2stringvar{"Cambridge"};string&r1=var;编译成功代码3stringvar{"Cambridge"};string&&r1{var};编译成功Code1编译失败g++-g-DLINUX-std=c++0x-csrc/dummy.cpp-osrc/

c++ - 在 C++ 中初始化静态常量数组的特定元素

我有一些C需要转换为C++。它做了这样的事情:enum{ELEM0,ELEM1,ELEM2,ELEM3,ELEM4,MAX_ELEMS}#defineLEN16staticconstcharlut[MAX_ELEMS][LEN]={[ELEM2]="Two",[ELEM3]="Three",[ELEM1]="One",[ELEM4]="Four",[ELEM0]="Zero"}实际上,我有数百个元素在数组中没有任何顺序。我需要保证数组中的条目将枚举与适当的文本联系起来。是否可以在-std=gnu++11中使用像这样的位置参数来初始化数组? 最佳答案

c++ - 如何禁用隐式构造函数转换,同时允许复制初始化

假设我们有类似的东西:classU{...}和:classT{T(constU&){...}}现在我可以像这样声明一个变量:Ufoo;然后Tblah(foo);或Tblah=foo我个人更喜欢后者。现在,我应该将T复制构造函数更改为:classT{explicitT(constU&){...}}我只能像这样声明一个变量:Tblah(foo);Tblah=foo;会给我一个关于无法将U转换为T的编译错误。http://en.cppreference.com/w/cpp/language/explicit用以下方式解释该行为:“指定不允许隐式转换或复制初始化的构造函数和(自C++11起)转

c++ - union 体的活跃成员,统一的初始化和构造函数

作为(WorkingDraftof)C++Standard说:9.5.1[class.union]Inaunion,atmostoneofthenon-staticdatamemberscanbeactiveatanytime,thatis,thevalueofatmostoneofthenon-staticdatamemberscanbestoredinaunionatanytime.[...]Thesizeofaunionissufficienttocontainthelargestofitsnon-staticdatamembers.Eachnon-staticdatamembe

c++ - 使用 c++ 11 constexpr 进行 std::map 初始化

我想用constexpr键初始化一个std::map。考虑以下C++11MWE:#includeusingstd::map;constexprunsignedintstr2int(constchar*str,constinth=0){return!str[h]?5381:(str2int(str,h+1)*33)^str[h];}constmapvalues={{str2int("foo"),"bar"},{str2int("hello"),"world"}};intmain(){return0;}当代码编译最近的clang和gcc时,生成的二进制文件将包含key类型的字符串:为什么k

c++ - 这些在 C++ 中初始化 C 数组的方法有区别吗?

我想将数组的所有成员初始化为零,或者nullptrstructWindow{inta;};intmain(){Window*list[4]={0,0,0,0};Window*list2[4]={0};Window*list3[4]={};Window*list4[4]{0,0,0,0};Window*list5[4]{0};Window*list6[4]{};}我知道当至少一个成员初始化为任何值时,所有其他成员都初始化为零,所以如果我这样做:intlist[4]={6};第一个成员变为6,其余所有成员都被零初始化。但是我很困惑:intlist[4]{0};和intlist[4]{};我

c++ - Constexpr 替代 placement new 能够使内存中的对象保持未初始化状态?

我正在尝试创建一个静态容器,它具有基于堆栈的内存并且可以容纳T的N个实例。非常类似于std::vector我希望当前未使用的内存不包含T的初始化项。这通常可以通过placementnew来解决,但不可能在constexpr中使用。使用union我发现了一个技巧,您可以为此使用union,如下所示:templateunioncontainer_storage_type{structempty{};constexprcontainer_storage_type():uninitialized{}{}constexprcontainer_storage_type(value_typev):v

c++ - 为什么这不起作用? (引用的大括号初始化)

#includeintmain(){structA{unsignedcharl;std::arrayc;};constAa={1,"t"};//OKconstA&ar={1,"t"};//error:invalidinitializationofreferenceoftype'constmain()::A&'fromexpressionoftype''}(海湾合作委员会8.2,-std=c++17)Thisquestion谈论一个GCC错误,但它是旧的(7年前)。请注意,我不关心生命周期延长,我实际上是将临时变量直接传递给一个函数以供使用而不是存储它,但我尝试让示例变得干净。编辑:我不

c++ - 根据标志为成员初始化列表中的成员触发特定构造函数

我想根据传递给包含类的构造函数的标志为成员变量触发特定的构造函数。如果我从一个简单的例子开始是最简单的:#include#include#includestructstate{boolflag1;boolflag2;intvalue;};classA{public:A():_a(){}A(boost::none_tnone):_a(){}A(state&st):_a(st.value){}A(constA©):_a(copy._a){}private:boost::optional_a;};classB{public:B():_b(){}B(boost::none_tnone)

STM32 LED编程 GPIO的初始化(标准库)

实验的电路图介绍实验的电路图类似于开漏接法要初始化GPIOC接口标准库的模板GPIO的标准库编程接口GPIO引脚的初始化GPIO作为片上外设每一个片上外设使用前一定要使能时钟为什么要使能时钟?时钟是啥时钟的使能stm32的每一个片上外设都是时序电路时序电路在使用前都要进行时钟使能通过调用图片中圈起来的函数进行时钟初始化第一个参数为初始化的GPIO口绿色的字如要初始化GPIOC第一个参数就输入RCC_APB2Periph第二个参数就输出ENABLE即可完成时钟的初始化开启gpioc的时钟GPIO_Init的初始化第一个参数写你要初始化端口以GPIOCP13为例子第一个参数就写GPIOC第二个参数