草庐IT

non-throwing

全部标签

c++ - 为什么迭代器在 VS2010 中导致调试非常缓慢,即使 _HAS_ITERATOR_DEBUGGING、_SECURE_SCL、_SECURE_SCL_THROWS 设置为 0

我一直试图找出为什么在Debug模式下调试我们的程序需要这么长时间。在使用xperf查看堆栈的样子后,很明显我们在迭代器和STL容器上花费了大量时间。我在谷歌上搜索了一会儿,找到了选项_HAS_ITERATOR_DEBUGGING=0_SECURE_SCL=0_SECURE_SCL_THROWS=0我用#define在代码中设置所有这些#define_HAS_ITERATOR_DEBUGGING0#define_SECURE_SCL0#define_SECURE_SCL_THROWS0但这似乎没有用,所以我尝试使用visualstudio项目中的预处理器定义,但似乎仍然没有帮助。我已经

c++ - QML:在 QML 中使用 cpp 信号总是导致 "Cannot assign to non-existent property"

我只是想将一个cpp信号连接到一个qml槽并尝试了不同的方法,但它总是在运行时导致相同的QML错误:无法分配给不存在的属性“onProcessed”!为什么?这是我的Cpp对象:#includeclassImageProcessor:publicQObject{Q_OBJECTpublic:explicitImageProcessor(QObject*parent=0);signals:voidProcessed(constQStringstr);publicslots:voidprocessImage(constQString&image);};ImageProcessor::Ima

C++ 错误 : reference to non-static member function must be called

我正在尝试创建一个类来抽象libuv网络功能的一些基本行为。#defineTCP_BACKLOG256class_tcp{uv_tcp_t*tcp=NULL;public:~_tcp(){deletetcp;}voidlisten_uv_listen_uv_connection_cb(uv_stream_t*stream,intstatus){printf("NEWCONNECTION\n");}voidlisten(constchar*host,intport){tcp=newuv_tcp_t();uv_tcp_init(uv_default_loop(),tcp);sockaddr

c++ - 为什么 'control reaches end of non-void function' 只是一个警告?合法吗?

这个问题在这里已经有了答案:WhydoesthisC++snippetcompile(non-voidfunctiondoesnotreturnavalue)[duplicate](7个答案)关闭8年前。C++定义具有非void返回类型的函数允许控制到达函数末尾而不是到达return语句是否合法?gcc和clang仅为此发出警告。这样做的代码是合法的还是这些编译器只是慷慨?海湾合作委员会:warning:noreturnstatementinfunctionreturningnon-void[-Wreturn-type]clang:warning:controlreachesendof

c++ - 没有参数的 C++ throw 会在另一个框架内工作以重新抛出异常吗?

如果我有如下代码:try{doSomething();}catch(...){noteError();}voidnoteError(){try{throw;}catch(std::exception&err){std::cerrnoteError()下部框架内的两个地方都会抛出原始异常吗? 最佳答案 您的原始代码很好。您捕获了不同的异常类型并调用了一个函数来记录一条消息并重新抛出。throw语句不需要直接出现在相应的catchblock中。但是,如果您调用其中一个“注释”函数并且您没有当前正在处理异常,那么您的程序将调用termin

c++ - 如何解决模板参数推导中的 const/non-const 冲突

我有一个接受std::pair的函数模板以及其中一种类型的值。我想使用来自std::map的条目调用此函数作为对参数。#include#includetemplatevoiddo_stuff(std::pairconst&pair,T1const&val){//Imaginethatthisdoessomethingimportant...}intmain(){std::mapfoo{{0,0.0}};do_stuff(*foo.begin(),0);}编译失败,因为map条目的类型是std::pair,所以T1的类型推导有冲突的类型:constint通过pair参数,和int通过va

支持 Scott Meyer 建议的 C++ IDE : Prefer non-member non-friend functions over members

ScottMeyer关于非成员函数增加封装并允许更优雅的设计(设计方面)的论点对我来说似乎非常有效。看这里:Article但是我对此有疑问。(似乎还有其他人,尤其是库开发人员,他们通常完全忽略这一点)当我使用成员函数时,代码通常看起来更好、更合乎逻辑。不过,这可能是一种后天习得的品味,只是需要一些时间来习惯先查看算法,然后再查看对象。(颤抖)所以也许我只有一个问题:有了成员函数,我和我的IDE就知道类可以做什么。对我来说,这是巨大的!我使用任何不支持成员函数代码完成的东西来编程。在设计良好的库中,它完全取代了我的文档。即使我会查看api文档,浏览成员列表也感觉绝对自然、合乎逻辑,我可以

C++新手问题--使用try、throw、catch的基本错误处理

我正在尝试了解C++中的错误处理。我读到过,使用try、throw、catch比使用带有返回值的if语句更好,也更简单。但我不确定我是否真的理解try,throw,catch是如何工作的。我在下面做了一个简单的例子,如果能得到关于任何问题或不良风格的反馈,那就太好了。我的目标是根据示例创建一个函数来检查另一个计算的结果。以下是我对try、throw、catch的疑问:(1)catch语句应该包含在我的函数中吗?或者它应该在其他地方,比如在main()中或在完成初始计算的函数中?(2)对这么简单的事情使用try、catch、throw是不是太过分了(我想改进我的风格)?(3)如果有错误,

c++ - 编译器在构造函数上提示 BOOST_CHECK_THROW

以下不编译:classFoo{public:Foo(boost::shared_ptrarg);};//intest-caseboost::shared_ptrbar;BOOST_CHECK_THROW(Foo(bar),std::logic_error);//compilererrorhereBar的实现无关紧要。编译器提示Foo没有合适的默认构造函数(VC++2005)。如果我添加一个默认构造函数,它就会工作,并且它实际上会被调用。为什么此语句需要默认构造函数? 最佳答案 发生这种情况是因为BOOST_CHECK_THROW是一

C++ throw() 优化

根据OptimizingC++,Usetheemptyexceptionspecification(thatis,appendthrow()tothedeclaration)forthefunctionsyouaresurewillneverthrowexceptions.如果我知道我的90%的方法不会抛出异常怎么办?将throw()附加到所有这些方法似乎非常规且冗长。如果没有,有什么好处?还是我误解了什么? 最佳答案 C++11引入了noexcept,throw有点被弃用(并且根据this效率较低)noexceptisanimpr