Tag: boost

static_cast与boost :: shared_ptr?

什么是与boost::shared_ptr的static_cast的等价物? 换句话说,我该如何重写下面的内容 Base* b = new Derived(); Derived* d = static_cast<Derived*>(b); 什么时候使用shared_ptr ? boost::shared_ptr<Base> b(new Derived()); boost::shared_ptr<Derived> d = ???

在C ++中使用Boost生成UUID的示例

我想生成随机的UUID,因为它对于我的程序中的实例具有唯一的标识符非常重要。 我研究了Boost UUID ,但是我无法设法生成UUID,因为我不明白要使用哪个类和方法。 如果有人能给我任何如何实现这一目标的例子,我将不胜感激。

使用shared_ptr的例子?

嗨,我今天问了一个问题, 如何在同一个向量数组中插入不同types的对象 ,我的代码在这个问题是 gate* G[1000]; G[0] = new ANDgate() ; G[1] = new ORgate; //gate is a class inherited by ANDgate and ORgate classes class gate { ….. …… virtual void Run() { //A virtual function } }; class ANDgate :public gate {….. ……. void Run() { //AND version of Run } }; class ORgate […]

CMake:unit testing的项目结构

我想构build我的项目,包括生产源(在src子文件夹)和testing(在test子文件夹)。 我正在使用CMake来build立这个。 作为一个最小的例子,我有以下文件: 的CMakeLists.txt: cmake_minimum_required (VERSION 2.8) project (TEST) add_subdirectory (src) add_subdirectory (test) SRC /的CMakeLists.txt: add_executable (demo main.cpp sqr.cpp) SRC / sqr.h #ifndef SQR_H #define SQR_H double sqr(double); #endif // SQR_H SRC / sqr.cpp #include "sqr.h" double sqr(double x) { return x*x; } src / main.cpp – 使用sqr,并不重要 testing/的CMakeLists.txt: find_package(Boost COMPONENTS system filesystem unit_test_framework REQUIRED) […]

获取一个boost :: shared_ptr为此

我在我的代码中广泛使用boost:shared_ptr 。 实际上,在堆上分配的大部分对象都是由shared_ptr 。 不幸的是,这意味着我不能将this传递给任何需要shared_ptr函数。 考虑这个代码: void bar(boost::shared_ptr<Foo> pFoo) { … } void Foo::someFunction() { bar(this); } 这里有两个问题。 首先,这不会编译,因为shared_ptr的T *构造函数是显式的。 其次,如果我强制它与bar(boost::shared_ptr<Foo>(this))我将创build第二个共享指针到我的对象,最终将导致双删除。 这使我想到了我的问题:是否有任何标准模式获取您知道的现有共享指针的副本存在于这些对象之一的方法内? 使用侵入性的引用计数我唯一的select在这里?

更多精神疯狂 – parsing器types(规则vs int_parser <>)和元编程技术

问题是在底部粗体,问题也是由蒸馏代码片段总结的。 我试图统一我的types系统(types系统做和从types到string)到一个单一的组件(由Lakos定义)。 我正在使用boost::array , boost::variant和boost::mpl ,以实现此目的。 我希望我的types的parsing器和生成器规则统一在一个变体中。 有一个未定义的types,一个int4(见下文)types和一个int8types。 该变体读作variant<undefined, int4,int8> 。 int4特征: struct rbl_int4_parser_rule_definition { typedef boost::spirit::qi::rule<std::string::iterator, rbl_int4()> rule_type; boost::spirit::qi::int_parser<rbl_int4> parser_int32_t; rule_type rule; rbl_int4_parser_rule_definition() { rule.name("rbl int4 rule"); rule = parser_int32_t; } }; template<> struct rbl_type_parser_rule<rbl_int4> { typedef rbl_int4_parser_rule_definition string_parser; }; 上面的变种开始为未定义,然后我初始化规则。 我有一个问题,这导致了50页的错误,我终于设法追查下来,Variant在赋值时使用operator= ,而boost::spirit::qi::int_parser<>不能赋给另一个(operator = )。 相比之下,我的undefinedtypes没有问题: struct rbl_undefined_parser_rule_definition { typedef boost::spirit::qi::rule<std::string::iterator, void()> rule_type; rule_type […]

获取可执行文件的path

我知道这个问题之前已经被问过,但是我还没有看到一个满意的答案,或者是一个明确的“不,这个不能做”,所以我会再问一次! 我所要做的就是以独立于平台的方式获取当前正在运行的可执行文件的path,无论是作为绝对path还是相对于可执行文件的调用位置。 我虽然boost :: filesystem :: initial_path是我的麻烦的答案,但似乎只处理问题的“平台无关”的一部分 – 它仍然返回的应用程序被调用的path。 对于一些背景,这是一个使用Ogre的游戏,我试图使用Very Sleepy进行configuration,它从自己的目录运行目标可执行文件,所以当然在加载游戏时发现没有configuration文件等,并及时崩溃。 我希望能够将它传递给configuration文件的绝对path,我知道它将永远与可执行文件一起生存。 在Visual Studio中debugging同样如此 – 我想能够运行$(TargetPath)而不必设置工作目录。

使用Boost.Log日志库的经验?

我正在考虑开始使用Boost.Log日志库 。 有谁使用Boost.Log? 请分享你在这方面的经验。 我正在考虑的其他库有Apache log4cxx(安装起来很麻烦,但是我的团队成员想要一些简单的入门)和Pantheios(同样的问题,因为它与额外的前端和后端一起工作)。

ACE vs Boost vs POCO

我一直在使用Boost C ++库很长一段时间。 我非常喜欢用于networking编程的Boost Asio C ++库 。 不过,我还介绍了另外两个库: POCO和自适应通信环境(ACE)框架 。 我想知道每个人的好坏。

应该如何使用std :: optional?

我正在阅读std::experimental::optional的文档,我对它做了什么有一个很好的想法,但我不明白什么时候应该使用它,或者我应该如何使用它。 该网站迄今尚未包含任何示例,这让我很难理解这个对象的真实概念。 什么时候std::optional是一个很好的select,它是如何弥补以前的标准(C ++ 11)中找不到的。