草庐IT

初始化OpenStack

全部标签

c++ - 在初始化列表中引用类成员是未定义的行为吗?

假设我有以下内容:classA{Bmember1;Cmember2;public:A();};classB{public:C&ref_to_c;B(C&ref_to_c);};classC{...};B要求在其构造函数中提供对C的引用。如果A类提供C,那么指定A的初始化列表如下是否合法...A():member1(B(member2)){}也就是说,member2是否存在于initialiserlist阶段,还是这个undefinedbehavior? 最佳答案 初始化如下:5Initializationshallproceedin

c++ - 在 VS 2013 中使用初始化列表初始化 map 的 map

我正在尝试使用C++11初始化map的map。我的编译器是VS2013Express。unordered_map>substitutions={{Record::BasementType,{{"0",""},{"1","Slaborpier"},{"2","Crawl"}}},{Record::BuildingStyle,{{"0",""},{"1","Ranch"},{"2","Raisedranch"}}},//...andsoon};它可以编译,但我在ntdll.dll中设置了断点。但是此代码的简化版本:unordered_map>substitutions={{Record::

c++ - 为什么我可以从 {} 初始化一个常规数组,而不是一个 std::array

这个有效:intarr[10]={};arr的所有元素都值初始化为零。为什么这行不通:std::arrayarr({});我从g++(版本4.8.2)收到以下警告:warning:missinginitializerformember‘std::array::_M_elems’ 最佳答案 有两个问题,一个是样式问题,另一个是警告。虽然可能并不明显,但聚合初始化发生在一个临时对象上,然后将其用作复制构造函数的参数。执行此初始化的更惯用的方式如下:std::arrayarr={};虽然这样还是留下了警告。警告由gccbugreport:

c++ - 变量 'fstream grabpass' 具有初始值设定项但类型不完整

我在第37行(fstreamgrabpass("passwords.txt");)上使用fstream从文件中读取错误,但似乎我做错了什么。#include#include#includeusingnamespacestd;inti,passcount,asterisks;charreplace,value,newchar;stringusername,password,storedUsername,storedPassword;intlogin(stringusername,stringpassword){if(username=="test"/*storedUsername*/){

c++ - 类中未初始化的常量成员

这可能是一个非常简单的问题,但我一直在寻找答案有一段时间了,但似乎无法弄清楚。我试图在一个类中初始化一个常量变量常量指针。这是头文件:classScheduler{public:Scheduler();explicitScheduler(unsignedlong*);private:constunsignedlong*constthresh;};这是类的构造函数Scheduler::Scheduler(unsignedlong*threshold):thresh(threshold){}当我尝试编译这段代码时遇到了这个错误:scheduler.cpp:Inconstructor‘Sch

c++ - 静态 C++ 映射初始化错误 C2552 : non-aggregates cannot be initialized with initializer list

我正在尝试使用以下代码在header中初始化map,但它一直在标题中显示错误。我正在使用C++11,所以这应该是可能的,对吧?typedefstd::map>AnimationSpeedMap;AnimationSpeedMapAnimationSpeeds={{NPCAnimation::WALK,{{Direction::LEFT,sf::milliseconds(100)},{Direction::RIGHT,sf::milliseconds(100)},{Direction::UP,sf::milliseconds(200)},{Direction::DOWN,sf::mill

c++ - 如何在 C++ 中初始化嵌套结构?

我在程序中创建了几个不同的结构。我现在有一个带有嵌套结构的结构,但是我不知道如何正确初始化它们。结构如下所示。/***POINTSTRUCTURE***/structPoint{floatx;//xcoordofpointfloaty;//ycoordofpoint};/***BoundingBoxSTRUCTURE***/structBoundingBox{Pointymax,ymin,xmax,xmin;};/***PLAYERSTRUCTURE***/structPlayer{vectorx;//playersxcoordsvectory;//playersycoordsBoun

c++ - 从构造函数初始化列表中传递它

在以下代码中将'this'传递给初始化列表中的另一个对象时是否有任何问题?classCallback{public:virtualvoidDoCallback()=0;};classB{Callback&cb;public:B(Callback&callback):cb(callback){}voidStartThread();staticvoidThread(){while(!Shutdown()){WaitForSomething();cb.DoCallback();}}};classA:publicCallback{Bb;public:A():b(*this){b.StartTh

c++ - 从派生类初始化列表调用基类构造函数的顺序

structB{intb1,b2;B(int,int);};structD:B{intd1,d2;//whichistechnicallybetter?D(inti,intj,intk,intl):B(i,j),d1(k),d2(l){}//1stBase//orD(inti,intj,intk,intl):d1(k),d2(l),B(i,j){}//lastBase};以上只是伪代码。实际上,我想知道调用基础构造函数的顺序重要吗?是否有任何情况导致的不良行为(尤其是极端情况)?我的问题是关于更多技术方面的问题,不是编码风格。 最佳答案

c++ - constexpr 和初始化

也许已经有人问过类似的问题,当然,这是一个吹毛求疵...我有一堆常量std::map用于在enum(class)值和它们的std::string表示之间切换(双向)。这里有人向我指出,这些映射将在运行时初始化,当其他初始化代码运行时,在我的程序执行所有好东西之前。这意味着常量表达式会影响运行时性能,因为映射是根据它们的枚举字符串对构建的。作为说明性示例,这里是其中一张map的示例:enumclassos{Windows,Linux,MacOSX};constmapos_map={{"windows",os::Windows},{"linux",os::Linux},{"mac",os: