草庐IT

初始化OpenStack

全部标签

c++ - 统一初始化int* : how can it be forced?

以下代码无法使用clang++3.8.0和g++6.3.0进行编译(编译器标志为-std=c++11-Wall-Wextra-Werror-pedantic-errors):intmain(){int*a=int*{};//doesn'tcompile//^^^^can'tbeparsedasatype(void)a;usingPInt=int*;PIntb=PInt{};//compilessuccessfully//^^^^isparsedasatype(void)b;}这是一种强制编译器以正确方式解释int*{}的方法吗(typedefingofint*是其中一种方式)?

c++ - 用双花括号初始化 vector<string>

有人可以解释下例中使用双花括号和单花括号初始化的行为差异吗?代码#1:vectorv={"a","b"};stringc(v[0]+v[1]);cout输出#1:c=abc.c_str()=ab代码#2:vectorv={{"a","b"}};stringc(v[0]+v[1]);cout输出#2:c=a\acke�Z\c.c_str()=a 最佳答案 隐式转换中心。这就是正在发生的事情。vectorv={"a","b"};您可以通过提供包含两个元素的初始化列表来初始化vector。两个std::strings从字符串文字初始化,然

c++ - set::vector 初始化用数字引号

所以我想到了一个关于std::reduce的问题,这让我想到了一个例子。cppreference.com在这个例子中,我看到了以下std::vector声明:std::vectorv(10'000'007,0.5);这些引用在这里做什么?我以前从未在任何地方见过这个。这是我应该了解的一种新型C++功能吗? 最佳答案 这是C++14的新特性。来自cppreference:Optionalsinglequotes(')maybeinsertedbetweenthedigitsasaseparator.Theyareignoredbyth

c++ - 为什么结构属性声明和初始化顺序会这样?

我最近遇到了这个:#include#include#include#include//sortfunction#include//functionsutilities#include//randomnumbersgenerationusingnamespacestd;default_random_enginegenerator;uniform_int_distributiondistribution(0,9999);autorandomer=bind(distribution,generator);structTest_struct{stringord_as_string;intord

c++ - 将从唯一指针移动到共享指针也会初始化 enable_shared_from_this

当我继承std::enable_shared_from_this,但是我创建了一个unique_ptr,std::enable_shared_from_this里面的weak_ptr也会被初始化吗当我通过std::move或移动构造函数“移动”到shared_ptr时?例如下面的代码会发生什么:#include#includeclassA:publicstd::enable_shared_from_this{public:std::shared_ptrgetA(){returnshared_from_this();}};intmain(){std::unique_ptru(newA()

c++ - 可变大小的对象可能无法初始化尽管初始化错误

intmain(){intsample_rate=50;intt_max=60*5;intdimensions=3;intnum_samples=sample_rate*t_max;doubledata[dimensions][num_samples]={{}};//Errorherereturn0;}我知道堆上数组的大小必须在编译时知道,它在这里(3x15000)。为什么我仍然收到错误? 最佳答案 只需使用std::vector即可。#includeintmain(){intsample_rate=50;intt_max=60*5

c++ - 使用初始化列表创建单项 vector

我有一个函数func这是重载采取std::vector参数或Obj争论。#include#includeclassObj{inta=6;};voidfunc(conststd::vector&a){std::cout实际输出:therehere预期输出:herehere好像{obj}不初始化vector,而是初始化对象。我猜想在初始化哪种类型时有一些优先顺序。如何精确控制?(使用g++(Ubuntu8.3.0-6ubuntu1)8.3.0编译的示例。)我发现了可能的重复项(c++11singleelementvectorinitializationinafunctioncall),尽管

c++ - 为什么我不能用统一初始化来初始化一个字符串?

我有一个模拟窗口的程序;所以我将窗口的内容存储在成员数据content中,它是std::string类型:classWindow{usingtype_ui=unsignedint;public:Window()=default;Window(type_ui,type_ui,char);voidprint()const;private:type_uiwidth_{};type_uiheight_{};charfill_{};std::stringcontent_{};mutabletype_uitime_{};};Window::Window(type_uiwidth,type_uihe

c++ - 什么时候初始化匿名命名空间数据?

我一直在使用匿名命名空间来存储本地数据和函数,想知道什么时候初始化数据?是当应用程序以与静态数据相同的方式启动时还是依赖于编译器?例如://foo.cpp#include"foo.h"namespace{constintSOME_VALUE=42;}voidfoo::SomeFunc(intn){if(n==SOME_VALUE){...}}问题源于使一些代码线程安全。在上面的例子中,我需要确定SOME_VALUE在第一次调用SomeFunc之前被初始化。 最佳答案 C++标准,3.6.2/1:Zero-initialization

c++ - 如何在类构造函数中初始化数组?

在Xcode工作在MacOSXLeopard在C++中:我有以下代码:classFoo{private:stringbars[];public:Foo(stringinitial_bars[]){bars=initial_bars;}}它不编译并抛出以下错误:error:incompatibletypesinassignmentof'std::string*'to'std::string[0u]'我注意到删除行bars=initial_bars;解决了问题。看来我没有正确完成作业。我该如何解决这个问题?编辑:变量bars是一个字符串数组。在主函数中,我像这样初始化它:stringbar