草庐IT

ZN5boost

全部标签

c++ - 使用 GCC 4.7.0 构建 Boost 1.49.0 时出错

我正在尝试使用GCC4.7.0(MinGW)构建Boost1.49.0。我不断收到以下错误消息数十次:c:\tools\mingw\bin../lib/gcc/i686-pc-mingw32/4.7.0/../../../../include/c++/4.7.0/cmath:1096:11:error:'::hypot'hasnotbeendeclaredcmath的第1096行包含using::hypot;cmath包括math.h将hypot函数声明为externdouble__cdeclhypot(double,double);/*inlibmoldname.a*/在这两个文件中

c++ - boost::bind & boost::function 指向重载或模板化成员函数的指针

我有一个回调机制,涉及的类有:classApp{voidonEvent(constMyEvent&event);voidonEvent(constMyOtherEvent&event);Connectorconnect;}classConnector{templatevoidSubscribe(boost::functioncallback);}App::App(){connect.Subscribe(&App::OnEvent);}首先,这段代码无法编译,它只是一个说明。模板的使用使我的示例变得复杂,但我将它们留在里面是因为它会影响我的问题。在我看来,我的订阅需要模板化,因为连接器类

c++ - Boost Property_Tree 迭代器,如何处理它们?

很抱歉,我之前问过一个关于同一主题的问题,但我的问题涉及那里描述的另一个方面(Howtoiterateaboost...)。看看下面的代码:#include#include#include#include#includeintmain(intargc,char**argv){usingboost::property_tree::ptree;ptreept;read_xml("try.xml",pt);ptree::const_iteratorend=pt.end();for(ptree::const_iteratorit=pt.begin();it!=end;it++)std::cou

c++ - Boost.Filesystem 如何找出您的可执行文件在哪个目录中?

所以我运行我的应用程序。我需要它知道它的可执行文件在哪里。如何使用Boost.Filesystem找到它的路径? 最佳答案 boost::filesystem::system_complete(argv[0]);例如[davka@bagvappDebug]$./boostfstest/home/davka/workspaces/v1.1-POC/boostfstest/Debug/boostfstest请注意,这会为您提供完整路径包括可执行文件名。 关于c++-Boost.Filesys

c++ - 将 boost::shared_ptr 初始化为 NULL

我可以用NULL值初始化shared_ptr吗?boost::shared_ptrs_obj(NULL);如果没有,那怎么办? 最佳答案 默认构造会为您执行此操作:templateclassshared_ptr{public:explicitshared_ptr(T*p=0):px(p){//Snip}//...private:T*px;//containedpointercount_type*pn;//ptrtoreferencecounter}; 关于c++-将boost::shar

c++ - boost 或 C++0x 中的任何 RAII 模板

RAII的boost中是否有可用的模板。有像scoped_ptr、shared_ptr这样的类,它们基本上都在指针上工作。这些类可以用于指针以外的任何其他资源。是否有任何模板可以与通用资源一起使用。以某个在作用域开始时获取的资源为例,必须在作用域结束时以某种方式释放。获取和释放都需要一些步骤。我们可以编写一个模板,它需要两个(或者可能是一个对象)仿函数来完成这项任务。我还没有想过如何实现这一点,我只是想知道是否有任何现有的方法可以做到这一点编辑:一个支持lambda函数的C++0x怎么样 最佳答案 shared_ptr提供了指定cu

c++ - 在 C++ 中使用 boost::lexical_cast 将 double 转换为字符串?

我想使用lexical_cast将float转换为字符串。通常它工作正常,但我对没有小数的数字有一些问题。如何修复字符串中显示的小数位数?例子:doublen=5;stringnumber;number=boost::lexical_cast(n);结果编号是5,我需要编号5.00。 最佳答案 来自boostlexical_cast的文档:Formoreinvolvedconversions,suchaswhereprecisionorformattingneedtightercontrolthanisofferedbythedef

c++ - 为什么 `boost::any` 比 `void*` 好?

boost::any和boost::any_cast与使用void*和dynamic_cast相比有哪些内在优势>? 最佳答案 优点是boost::any比void*更安全。例如inti=5;void*p=&i;static_cast(p);//Compilerdoesn'tcomplain.UndefinedBehavior.boost::anya;a=i;boost::any_cast(a);//throws,whichisgood至于您的评论,您不能从void*中dynamic_cast。您可以dynamic_cast仅从具有

c++ - boost.test 与 CppUnit

我使用CppUnit已经有一段时间了(我很满意)。随着我们使用越来越多的boost库部分,我对boost.test进行了简短的了解,现在我想知道是否应该在新项目中切换到boost.test。谁能告诉我这两个框架之间的区别以及使用boost.test的好处(如果有的话)? 最佳答案 这比Boost.Test替代方案更不笨重:classMyFixture{MyFixture(){/*setuphere*/}};BOOST_AUTO_TEST_CASE(my_test,MyFixture){BOOST_CHECK_EQUAL(0,foo)

c++ - boost shared_from_this<>()

有人能用几句简洁的话总结一下如何boostshared_from_this()应该使用智能指针,特别是从使用绑定(bind)函数在io_service中注册处理程序的角度来看。编辑:一些回复要求提供更多背景信息。基本上,我正在寻找“陷阱”,即人们使用这种机制观察到的反直觉行为。 最佳答案 我遇到的最大“陷阱”是从构造函数调用shared_from_this是非法的。这直接遵循这样的规则:对象的shared_ptr必须存在才能调用shared_from_this。 关于c++-boosts