草庐IT

CALL_NON_FUNCTION_AS_CONSTRUCTOR

全部标签

c++ - GCC 选项 : warning on non-void functions without a return statement

如果存在具有非空返回值但在其定义中不包含return语句的函数,是否有生成错误/警告的GCC/g++选项?例如:intadd(inta,intb){a+b;} 最佳答案 -Wreturn-type.它由-Wall(您应该始终与-Werror-Wextra一起运行)启用。 关于c++-GCC选项:warningonnon-voidfunctionswithoutareturnstatement,我们在StackOverflow上找到一个类似的问题: https:

c++ - 比较 std::tr1::function<> 对象

我一直在尝试使用用于存储处理事件的函数的tr1函数模板在C++中实现类似C#的事件系统。我创建了一个vector,以便可以将多个监听器附加到此事件,即:vector>listenerList;我希望能够从列表中删除处理程序以停止监听器接收事件。那么,我如何才能在此列表中找到对应于给定监听器的条目?我可以测试列表中的“函数”对象是否引用特定函数吗?谢谢!编辑:在研究了boost::signal方法之后,它似乎可能像你们中的一些人所建议的那样使用token系统来实现。Here'ssomeinfoonthis.观察者在附加到事件时会保留一个“Connection”对象,并且此连接对象用于在需

c++ - 复制一个 std::function 有多昂贵?

虽然std::function是可移动的,但在某些情况下这是不可能的或不方便的。复制它会受到严重处罚吗?它是否可能取决于捕获变量的大小(如果它是使用lambda表达式创建的)?是否依赖于实现? 最佳答案 std::function通常实现为值语义、小缓冲区优化、虚拟调度、类型删除类。这意味着如果您的状态很小,则复制将不涉及堆分配(除了在状态的复制构造函数内)和一些间接(找到如何复制此特定状态)。如果您的状态很大(例如,在当前MSVC上大于两个std::string),则需要额外的堆分配来存储状态。这不是您想要在每帧每个像素的基础上执

c++ - 为什么我不能将 boost::function 存储在 std::list 中?

我得到以下编译错误:error:expected`;'before'it'"这是我的代码:#include#includetemplatevoidexample(){std::list>::iteratorit;}为什么会这样?我该如何解决? 最佳答案 您需要将typename放在该行的前面,因为您执行::iterator的类型取决于模板参数T。像这样:templatevoidexample(){typenamestd::list>::iteratorit;}考虑这条线std::list>::iterator*it;这可能意味着乘法

c++ - C++ 中 C# 'as' 命令的等价物?

在C#中,您可以使用as来转换类型或获取null:Objecto=Whatever();Strings=oasString;在C++中是否有类似的简单方法来实现此目的?如果重要的话,我正在使用VisualStudio2010。[更新]:请记住,转换和使用as之间有一个非常重要的区别。如果类型不匹配,转换(至少在C#中)将抛出异常:Objecto=null;Strings=(String)o;//Willcrash. 最佳答案 在C++中,如果您有一个层次结构,其中Object是父对象而String是子对象,这将是一个dynamic_

c++ - 如何初始化 const/non-const 静态引用成员?

classFoo{private:intm_i;public:Foo(inti):m_i(i){}};classFooA{private:conststaticFoo&m_foo;staticFoo&m_foo2;};Q1>如何初始化const静态引用?Q2>如何初始化非常量静态引用?注意:您可以对类FooA进行更改以说明这些方法。 最佳答案 以同样的方式初始化非引用static成员://Foo.cppconstFoo&FooA::m_foo=fooObj1;Foo&FooA::m_foo2=fooObj2;其中fooObj1和fo

c++ - 在 C++11 中将 std::function/mem_fn 与成员函数一起使用

长话短说,是否有一种简单/定义的方式来以流线型方式处理函数对象/lambda和成员函数?如果我理解正确,如果我使用std::mem_fn,我需要将正确类型的对象传递给函数调用,即Objecto;ftncallstd::mem_fun(&Object::function);ftncall(o);理想情况下,会有一些方法可以将o“附加”到该函数对象,也许作为std::weak_ptr,这样我们就知道o是否被删除了。例如,如果有一种方法可以像这样模糊地做一些事情:Objecto;ftncallstd::mem_fn(&Object::function,o);//Ormaybestd::mem

c++ - GCC -Wunused-function 不起作用(但其他警告有效)

我试图通过使用GCC的-Wunused-function标志在我的代码库中找到未使用的函数。如我所料,使用gcc-Wall-Wunused-functionmain.cpp编译以下代码会打印一个unusedvariable警告:warning:unusedvariable‘x’[-Wunused-variable]但是,编译器不会给出unused-function警告。我该怎么做才能让GCC注意到未使用的函数foo()?//main.cppvoidfoo(){}//should(butdoesn't)trigger'unusedfunction'warningintmain(intar

c++ - xcode - "attempt to use a deleted function"- 这是什么意思?

我正在Xcode4.2中编写C++库。我的一个类无法编译并出现此错误:attempttouseadeletedfunction没有具体说明它在谈论什么功能。我不想在这里发布类代码,但是有人知道这个错误是什么意思吗? 最佳答案 我对线程(C++11)有类似的消息。结果是我向线程调用的函数传递了错误数量的参数,因此线程找不到任何合适的函数并给出了该消息。 关于c++-xcode-"attempttouseadeletedfunction"-这是什么意思?,我们在StackOverflow上找

c++ - 错误 C2582 : 'operator =' function is unavailable in 'B'

以下代码给出了main()中行“e=f”的编译错误(至少在使用MSVS2008时):errorC2582:'operator='functionisunavailablein'B'classA{public:A(){}staticconstdoublex;};constdoubleA::x=0.0;classB{public:B():x(0.0){}constdoublex;};intmain(intargc,char*argv[]){Ac,d;Be,f;c=d;e=f;return0;}应该为A和B这两个类生成默认赋值运算符!?in12.8.10:"Iftheclassdefinit