草庐IT

member_function

全部标签

c++ - 使用 std::function 时选择自动返回类型而不是构造函数的调用运算符

以下片段:#includestructX{X(std::functionfn);//(1)X(double,double);//(2)templateautooperator()(Tconst&t)const{//(3)returnt.foo();}};intmain(){doublea,b;autox=X(a,b);return0;}...在使用-std=c++14时无法同时使用clang(4.0.1)和g++(6.3,7.2)进行编译—在OSX和godbolt.org上测试.但如果满足以下条件,它编译没有问题:我删除构造函数(1);或者我在(3)中将返回类型设置为具体类型(例如do

可以将 C++11 lambda 分配给签名不正确的 std::function

以下编译并运行(在AppleLLVM版本6.1.0和VisualC++2015下):#include#includestructs{intx;};intmain(intargc,char**argv){std::functionf=[](consts&p){std::cout为什么没有赋值std::functionf=[](consts&p){std::cout产生错误?接受右值引用的函数不应该与接受const左值引用的函数具有相同的签名,不是吗?删除const来自lambda的声明确实会产生预期的错误。 最佳答案 扩展现有评论和答

可以将 C++11 lambda 分配给签名不正确的 std::function

以下编译并运行(在AppleLLVM版本6.1.0和VisualC++2015下):#include#includestructs{intx;};intmain(intargc,char**argv){std::functionf=[](consts&p){std::cout为什么没有赋值std::functionf=[](consts&p){std::cout产生错误?接受右值引用的函数不应该与接受const左值引用的函数具有相同的签名,不是吗?删除const来自lambda的声明确实会产生预期的错误。 最佳答案 扩展现有评论和答

C++ 编译器错误 : ambiguous call to overloaded function

stringaux;intmaxy,auxx=0;cin>>aux;maxy=(int)sqrt(aux.size());我得到:1>errorC2668:'sqrt':ambiguouscalltooverloadedfunction1>couldbe'longdoublesqrt(longdouble)'1>or'floatsqrt(float)'1>or'doublesqrt(double)'为什么? 最佳答案 string::size()返回size_t,而sqrt在其任何版本中都不接受它。所以编译器必须强制转换,并且不能选

C++ 编译器错误 : ambiguous call to overloaded function

stringaux;intmaxy,auxx=0;cin>>aux;maxy=(int)sqrt(aux.size());我得到:1>errorC2668:'sqrt':ambiguouscalltooverloadedfunction1>couldbe'longdoublesqrt(longdouble)'1>or'floatsqrt(float)'1>or'doublesqrt(double)'为什么? 最佳答案 string::size()返回size_t,而sqrt在其任何版本中都不接受它。所以编译器必须强制转换,并且不能选

c++ vector.push_back 错误: request for member 'push_back' . ..,属于非类类型 'vector(char, allocator(char)) ()()'

我将Cygwin与GCC一起使用,最终我想将字rune件读入字符vector,并使用此代码#include#include#includeusingnamespacestd;intmain(intargc,char*argv[]){vectorstring1();string1.push_back('a');return0;}生成此编译时错误:main.cpp:Infunctionintmain(int,char**)':main.cpp:46:error:requestformemberpush_back'instring1',whichisofnon-classtypestd::v

c++ vector.push_back 错误: request for member 'push_back' . ..,属于非类类型 'vector(char, allocator(char)) ()()'

我将Cygwin与GCC一起使用,最终我想将字rune件读入字符vector,并使用此代码#include#include#includeusingnamespacestd;intmain(intargc,char*argv[]){vectorstring1();string1.push_back('a');return0;}生成此编译时错误:main.cpp:Infunctionintmain(int,char**)':main.cpp:46:error:requestformemberpush_back'instring1',whichisofnon-classtypestd::v

c++ - 错误 LNK2019 : unresolved external symbol _main referenced in function ___tmainCRTStartup, 但这次不是 Windows/控制台问题!

所以,臭名昭著的错误又回来了。该项目提示它找不到main()方法(这就是错误的意思,对)。但是我确实有一个主项目,而且我的项目应该是一个控制台项目。它以前有效,所以我知道不是那样。此外,该项目有太多的类和文件,我无法将它们全部发布,所以我会根据您的要求发布您需要的任何类。这是VisualStudio2010上的C++、OpenGL和SDL游戏。这不是任何库的问题,因为它在突然莫名其妙地显示此链接器错误之前运行良好。编辑:main()方法:intmain(intargc,char**argv){glutInit(&argc,argv);glutInitDisplayMode(GLUT_D

c++ - 错误 LNK2019 : unresolved external symbol _main referenced in function ___tmainCRTStartup, 但这次不是 Windows/控制台问题!

所以,臭名昭著的错误又回来了。该项目提示它找不到main()方法(这就是错误的意思,对)。但是我确实有一个主项目,而且我的项目应该是一个控制台项目。它以前有效,所以我知道不是那样。此外,该项目有太多的类和文件,我无法将它们全部发布,所以我会根据您的要求发布您需要的任何类。这是VisualStudio2010上的C++、OpenGL和SDL游戏。这不是任何库的问题,因为它在突然莫名其妙地显示此链接器错误之前运行良好。编辑:main()方法:intmain(intargc,char**argv){glutInit(&argc,argv);glutInitDisplayMode(GLUT_D

c++ - 公共(public)算子新建,私有(private)算子删除 : getting C2248 "can not access private member" when using new

一个类有重载的操作符new和delete。new是公开的,delete是私有(private)的。在构造该类的实例时,出现以下错误:pFoo=newFoo(bar)example.cpp(1):错误C2248:'Foo:operatordelete':无法访问在类'Foo'中声明的私有(private)成员但是这里没有调用delete,那么编译器扭曲的头脑中发生了什么?:)错误的原因是什么?是否可以在不借助成员CreateInstance函数的情况下解决问题? 最佳答案 当您执行newFoo()时,会发生两件事:首先调用operat