草庐IT

function-templates

全部标签

c++ - 错误的 "control reaches end of non-void function"gcc 警告怎么办?

$catt.cppintsign(inti){if(i>0)return1;if(i==0)return0;if(i我该怎么办?停止使用-Wall,因为它显然是错误的?最后加个假的return0?用“else”子句使代码困惑? 最佳答案 如果您不想添加“else”子句,因为它们会使代码变长,那么您可能想删除最后的“if”并使代码更短:intsign(inti){if(i>0)return1;if(i==0)return0;return-1;//i或者,如果您真的是在自己计算“符号”,而这并不是某个较长示例的简化:intsign(in

c++ - 错误 : no matching function for call to ‘std::vector<std::__cxx11::basic_string<char>>::push_back(int&)’

我是C++的新手。当我运行我的代码时出现此错误:(BigSorting.cpp:Infunction‘intmain(int,constchar**)’:BigSorting.cpp:13:22:error:nomatchingfunctionforcallto‘std::vector>::push_back(int&)’v.push_back(m);^Infileincludedfrom/usr/include/c++/8.1.1/vector:64,fromBigSorting.cpp:2:/usr/include/c++/8.1.1/bits/stl_vector.h:1074:

c++ - 为什么在 VC++ 调试器上计算表达式时会出现 "member function not present"错误?

我在另一个DLLMyDll.dll上有一个静态方法MyClass::myMethod()。在我的代码中,我调用了这个方法,它编译并运行良好。但是当我在即时窗口(或监window口)中尝试MyClass::myMethod()时,我总是得到:MyClass::myMethod()CXX0052:Error:memberfunctionnotpresent这是为什么?更新:我发现当我使用contextoperator它有效:{,,MyDLL}MyClass::myMethod()不过,我不太确定为什么需要它,所以我要稍等片刻,看看是否有人有很好的解释。更新2:我被要求提供更多信息。不幸的是

c++ - std::function 在堆栈数组中使用时崩溃

在MSVisualC++2010SP1中,此代码崩溃:#include"stdafx.h"#include#include//#includeinta=0;int_tmain(intargc,_TCHAR*argv[]){//thiswayitworks://std::vector>s;//s.push_back([](){a=1;});//s.push_back([](){a=2;intb=a;});std::functions[]={[](){a=1;},[](){a=2;//Problemoccursonlyifthefollowinglineisincluded.Whencom

c++ - 有没有办法绑定(bind) template<template> 参数?

上下文我有一个自定义比较器,它采用另一个比较器并应用额外的检查:templateclassComparator,typenameT>structSoftOrder:publicstd::binary_function{booloperator()(constTlhs,constTrhs)const{returnComparator()(lhs,rhs)&&AnotherCheck();}};我有第二个类接受比较器,例如:templateclassComparator>classProcessor{...};实例化Processor很容易使用标准比较器(例如std::less),如下所示

c++ - 为什么将 T 从外部模板作为默认参数传递给 std::function 会导致编译错误?

我创建了一个模板类,并将T作为默认类型参数传递。但是,这会导致编译失败。任何人都可以解释发生了什么?谢谢!附言。我使用的编译器是VS2012。#includeusingnamespacestd;templatestructdelegate{typedeffunctionfunction_t;function_tf;};intmain(){delegated;return0;}编译器输出:1>.\MicrosoftVisualStudio11.0\VC\include\functional(554):errorC2027:useofundefinedtype'std::_Get_func

c++ - std::vector 的 std::functions 查找

我有一个填充有回调函数的vector,我想在添加之前检查是否已经存在回调函数。我不知道它是否会工作,但到目前为止它甚至无法编译。vector>_callbacks;voidEvent::RegisterCallback(std::functioncallback){if(callback==NULL)return;vector>::iteratorit=std::find(_callbacks.begin(),_callbacks.end(),callback);if(it==_callbacks.end()){_callbacks.push_back(callback);}else{

c++ - std::bind 到 std::function 使用 Clang 崩溃

在将std::bind与std::function组合时,我无法理解一些细微之处。我已将我的问题最小化为以下代码片段:#include#includevoidbar(intx){std::coutf1=std::bind(bar,std::placeholders::_1);//CRASHESwithclang,worksfineinVS2010andVS2012std::functionf2=std::bind(f1,1);f2();return0;}注意到std::function的显式转换(在构建std::function时将auto替换为f2效果很好)。正在创建f2通过复制f1

c++ - 为什么显式模板实例化会在存在外线虚拟时导致 weak-template-vtables 警告?

[编辑以显示.cpp和hpp之间的拆分]//file.hppclassBase{public:virtual~Base(void);Base(void);Base(constBase&)=default;};templateclassDerived:publicBase{public:Derived(void);boolfunc(void);};//file.cpp#include"file.hpp"Base::~Base(void){}Base::Base(void){}templateboolDerived::func(void){returntrue;}templateDeriv

C++:template<class> 是什么意思?

我正在尝试理解一些C++代码。我是一位经验丰富的Java程序员,正在尝试学习C++。我已经阅读了一些关于模板的详尽文章,但没有人回答我以下模板规范是什么意思。templateclass,class>classVisualOdometryTT,templateclassNodeBuilderTT,classPoseGraphT>classVORosInterface{...};我不明白的部分是template我认为缺少某些类型规范的地方。但是代码编译没有问题。 最佳答案 以NodeBuilderTT为例,因为它更简单:NodeBuil