草庐IT

NS_DESIGNATED_INITIALIZER

全部标签

c++ - "Provides no initializer for reference member..."

经过一些谷歌搜索后,我找不到这个问题的答案。如何初始化它,为什么需要初始化?#include"CalculatorController.h"CalculatorController::CalculatorController(SimpleCalculator&aModel,ICalculatorView&aView){\\(thisisthebracketinformingmeoftheerror)fModel=aModel;fView=aView;}标题:#pragmaonce#include"ICalculatorView.h"#include"SimpleCalculator.h

C++ 模板 - 错误 : expected initializer before '<' token

我正在尝试学习模板,我希望我的类对能够容纳两个任何类型的对象。我现在只想为obj1提供一个访问器函数。但是当我尝试编译时出现以下错误:error:expectedinitializerbefore'::getObj1()我的代码是:#include#include#includeusingnamespacestd;templateclasspair{public:pair(constT1&t1,constT2&t2):obj1(t1),obj2(t2){};T1getObj1();private:T1obj1;T2obj2;};templateT1pair::getObj1(){ret

C++11 统一初始化 : Field initializer is not constant

我正在尝试像这样实例化一组字符串:classPOI{public:...staticconststd::setTYPES{"restaurant","education","financial","health","culture","other"};...}现在,当我这样做时,我得到了这些错误(全部在这一行):error:fieldinitializerisnotconstantstaticconststd::setTYPES{"restaurant","education","financial","health","culture","other"};error:in-class

c++ - 为什么嵌套的initializer_list会导致内存泄漏

最近我将我的项目升级到VisualStudio2013。因此现在可以使用initializer_list功能。我需要在我的单元测试中初始化测试数据。但是我在使用嵌套的initialize_lists时遇到了内存泄漏。#include#includestructTest_Fixture{Test_Fixture():test_data({std::make_shared>(std::vector{0,1}),std::make_shared>(std::vector{2,3,4})}){}std::vector>>test_data;};BOOST_FIXTURE_TEST_CASE(t

c++ - 空 initializer_list 上的赋值运算符

您能解释一下STL容器如何处理初始化列表为空的赋值运算符吗?当我做这样的事情时:vectorv;v={};调用的函数不是:vector&operator=(initializer_listil);但是:vector&operator=(vector&&x);另一方面,当我对自己的类(class)做类似的事情时:structA{A&operator=(constA&){return*this;}A&operator=(A&&){return*this;}A&operator=(initializer_list){return*this;}};/*...*/Aa;a={};代码无法在VS2

c++ - 错误 C7034 : an array cannot be initialized with a parenthesized initializer

我正在尝试编写一个nativeNode插件,它枚举Windows机器上的所有窗口并将它们的标题数组返回给JSuserland。但是我被这个错误难住了:C:\ProgramFiles(x86)\MicrosoftVisualStudio14.0\VC\include\xmemory0(655):errorC3074:anarraycannotbeinitializedwithaparenthesizedinitializer[C:\xampp\htdocs\enum-windows\build\enumWindows.vcxproj]C:\ProgramFiles(x86)\Micros

c++ - std::initializer_list<int>({1,2,3}) 和 {1,2,3} 有什么区别?

我有以下模板函数:templatevoidfoo2(Tt){}我知道我不能使用以下方式调用它:foo2({1,2,3});因为初始化列表是模板参数的非推导上下文。我必须使用:foo2>({1,2,3});但我也可以使用:foo2(std::initializer_list({1,2,3}));这让我想知道之间有什么区别:{1,2,3}和std::initializer_list({1,2,3})? 最佳答案 Abraced-initlist不是表达式,因此没有类型。当你打电话时foo2({1,2,3});编译器不知道是什么类型{1,

c++ - 使用多维 std::initializer_list

我有一个关于在C++中使用多维std::intializer_list的问题。我有一个Matrix类,我希望能够像这样初始化它:Matrixm({{1,2,3},{4,5,6},{7,8,9}});我现在拥有的构造函数采用二维初始化列表作为参数,但编译器不喜欢我的使用方式。这是代码:templateMatrix::Matrix(std::initializer_list>set){std::vector>setVec=set;std::vector>v;for(std::vector>::iteratori=setVec.begin();i!=setVec.end();i++){v.p

c++ - 为什么必须包含 <initializer_list> 才能使用 auto?

已经有类似的question关于SO,但我想强调braced-init-lists的另一个方面。请考虑以下事项:autox={1};//(1)除非标题,否则这是错误格式(8.5.4/2)已经包括了。但为什么?标准说,模板std::initializer_list不是预定义的。这是否意味着声明(1)引入了一种新类型?在所有其他情况下,auto可以使用如autoy=expr;哪里expr是一个表达式,自动推导的类型已经存在。另一方面,从逻辑的角度来看,编译器必须为结构{1}分配一个隐式类型。,为此std::initializer_list是另一个名字。但是在声明(1)中我们不想命名这个类型

c++ - Lambda 捕获 : to use the initializer or not to use it?

考虑以下最小示例:intmain(){intx=10;autof1=[x](){};autof2=[x=x](){};}我不止一次看到这样使用初始化器[x=x],但我不能完全理解它以及为什么我应该使用它而不是[x].我可以得到类似[&x=x]或[x=x+1]的含义(如documentation所示,以及为什么它们与[x],当然可以,但我仍然无法弄清楚示例中lambda之间的区别。它们是完全可以互换的还是有什么我看不到的区别? 最佳答案 有各种极端情况几乎可以归结为“[x=x]衰减;[x]不衰减”。捕获对函数的引用:void(&f)(