草庐IT

construct_at

全部标签

c++ - "local variables at the outermost scope of the function may not use the same name as any parameter"是什么意思?

我一直在阅读C++入门第5版。在第6.1章功能参数列表的第三段中。它写道“此外,函数最外层范围内的局部变量不得使用与任何参数相同的名称”。什么意思?我不是以英语为母语的人。我不明白函数的“最外层范围”的实际含义。 最佳答案 函数的最外层是定义函数体的block。您可以将其他(内部)block放入其中,并在该block的本地变量中声明变量。内部block中的变量可以与外部block中的变量或函数参数具有相同的名称;他们将名称隐藏在外部范围内。外部block中的变量不能与函数参数同名。演示:voidf(inta)//functionha

c++ - 怎么解析: constructing unnamed temporary with braced init list

我最近yetagainencountered符号(constint[10]){10,9,8,7,6,5,4,3,2,1}我记得它在C和C++中都是允许的,但通过完全不同的语言机制。我相信在C++中,正式的观点是它是通过显式类型转换(T)构造一个未命名的临时对象。cast-expression将减少为static_cast,通过C++11§5.2.9/4构造一个对象:”anexpressionecanbeexplicitlyconvertedtoatypeTusingastatic_castoftheformstatic_cast(e)ifthedeclarationTt(e);iswe

c++ - 为什么我在检查核心转储时进入 gdb "Cannot access memory at address 0x..."?

我在分析核心转储时尝试打印以下行时收到此消息。(gdb)p/x*($esi)Cannotaccessmemoryataddress0xe6d3a030我提到%esi(0xe6d3a030)指向的地址应该指向一些有效的分配数据。(当我自己运行这个程序并按照相同的指令中断时,这个打印有一些有意义的信息)造成这种情况的可能原因是什么?我是否遗漏了核心转储中的一些信息?如果是,我缺少什么信息?核心转储不应该包含所有已分配内存的快照吗?编辑:当我在加载核心转储时在gdb“维护信息部分”命令中使用时,我得到下面显示的信息。我可以看到地址0xe6d3a030在0xe6d00000->0xe6dfb0

c++ - 是否有可能有一个非递归的 at_c 实现?

很久以前,我看到了一种非递归实现,可以从类型序列/值序列中获取最后一个值/类型。它有一个很好的属性,即实例化的模板数量与序列包含的元素数量无关(并且是恒定的)。实现很简单,如下//astructthateatsanythingandeverythingstructeat{templateeat(T&&){}};//generatesVmatchingwithUtemplatestructmatch{usingtype=V;};templatestructback_{templatestaticU&&get(typenamematch::type...,U&&u){returnstati

c++ - C++ 中 std::is_trivially_copy_constructible 中的琐碎操作是什么

这是std::is_copy_constructible(1)和std::is_trivially_copy_constructible文档的摘录(2)关于cppreference.com:1)CheckswhetheratypeisCopyConstructible,i.e.hasanaccessibleexplicitorimplicitcopyconstructor.Iftherequirementismet,amemberconstantvalueequaltrueisprovided,otherwisevalueisfalse.2)Sameas(1),butthecopyco

c++ - 为什么 is_constructible 声称某些东西不是可构造的?

以下程序在使用GCC4.7和clang3.2编译时,会产生“1”作为输出。#includestructfoo{templatefoo(T){static_assert(notstd::is_same(),"nointsplease");}};#includeintmain(){std::cout();}这令人困惑。foo显然不能从int构造!如果我将main更改为以下内容,两个编译器都会因为静态断言失败而拒绝它:intmain(){foo(0);}为什么两个编译器都说它是可构造的? 最佳答案 这是标准必须说的(§20.9.5/6),

c++ - 如何避免错误:在抛出 'std::logic_error' 的实例后调用终止 what(): basic_string::_S_construct null not valid

if(player!=NULL)player->shuffled();我这样做是为了避免将空引用传递给字符串构造函数,但是在编译时仍然会出错。 最佳答案 不知何故,您正在调用std::string构造函数,其中constchar*值为NULL。为了避免这个问题。不要那样做。 关于c++-如何避免错误:在抛出'std::logic_error'的实例后调用终止what():basic_string::_S_constructnullnotvalid,我们在StackOverflow上找到一

python - ConfigurationError : Server at 127. 0.0.1 :27017 reports wire version 0, 但是这个版本的 PyMongo 至少需要 2 个(MongoDB 2.6)

我正在尝试使用mongoDB和PythonFlask构建应用程序。运行应用程序时,出现以下错误:ConfigurationError:Serverat127.0.0.1:27017reportswireversion0,butthisversionofPyMongorequiresatleast2(MongoDB2.6).有人可以帮我吗?谢谢,巴尔温德 最佳答案 这是一个非常烦人和奇怪的问题。但这个问题只需为我降级pymongo库即可解决。pipinstallpymongo==3.4.0在此找到答案:http://d-prototy

python - ConfigurationError : Server at 127. 0.0.1 :27017 reports wire version 0, 但是这个版本的 PyMongo 至少需要 2 个(MongoDB 2.6)

我正在尝试使用mongoDB和PythonFlask构建应用程序。运行应用程序时,出现以下错误:ConfigurationError:Serverat127.0.0.1:27017reportswireversion0,butthisversionofPyMongorequiresatleast2(MongoDB2.6).有人可以帮我吗?谢谢,巴尔温德 最佳答案 这是一个非常烦人和奇怪的问题。但这个问题只需为我降级pymongo库即可解决。pipinstallpymongo==3.4.0在此找到答案:http://d-prototy

c++ - 使用 at<float>(i, j) 访问 cv::Mat 的元素。是 (x,y) 还是 (row,col)?

当我们访问cv::Mat结构的特定元素时,我们可以使用mat.at(i,j)访问位置i,j的元素。然而,尚不清楚(i,j)是指矩阵中的x,y坐标,还是指第i行第j列。 最佳答案 OpenCV与许多其他库一样,以行优先顺序处理矩阵访问。这意味着每个访问都被定义为(row,column)。请注意,如果您使用图像的x和y坐标,如果y是您的垂直轴,则这将变为(y,x)。大多数矩阵库在这方面是相同的,访问是(row,col)以及在例如Matlab或Eigen(C++矩阵库)中。这些应用程序和库的不同之处在于数据在内存中的实际存储方式。Open