小编jdt*_*141的帖子

使用C++ Boost库有什么好处?

所以,我一直在阅读,看起来Boost库在实践中得到了很多使用(不过在我的店里).为什么是这样?是什么让它如此美妙?

c++ boost

117
推荐指数
7
解决办法
7万
查看次数

什么是符号表?

有人能描述符号表在C和C++的上下文中是什么吗?

c c++ symbol-table

81
推荐指数
4
解决办法
6万
查看次数

创建线程时有多少开销?

我刚刚回顾了一些非常糟糕的代码 - 通过创建一个新线程来在串行端口上发送消息的代码,以便在发送的每条消息的新线程中打包和组装消息.是的,对于创建pthread的每条消息,正确设置了位,然后线程终止.我不知道为什么有人会做这样的事情,但它提出了一个问题 - 实际创建一个线程有多少开销?

c++ posix pthreads

37
推荐指数
8
解决办法
4万
查看次数

将线程作为C++类的成员启动的最佳方法是什么?

我想知道启动一个C++类成员的pthread 的最佳方法是什么?我自己的方法作为答案......

c++ pthreads

16
推荐指数
3
解决办法
2万
查看次数

提高代码质量?

所以,在阅读这个网站时,我工作的商店似乎做了很多错事,有些事情是正确的.如何改进与同事合作的代码?我唯一能想到的就是以身作则 - 开始使用Boost等等.还有其他想法吗?

c++

10
推荐指数
1
解决办法
1038
查看次数

库初始化和关闭的常见模式?

是否有一种模式可用于调用底层(C)库的必需初始化和清理例程?在我的例子中,我想创建包装类,以便它可以组成其他对象.问题是,当我销毁包装类时,会调用底层库的清理例程.这很好,直到我实例化我的包装类的多个对象.我的问题是,真正处理这种情况的最佳方法是什么?我想到了静态参考计数器,但我想知道是否还有其他可能更好的选择和涉及的交易.

c++ design-patterns

9
推荐指数
2
解决办法
4138
查看次数

类成员函数使用boost :: bind和boost :: function作为回调函数

我正在设置一个成员函数作为我正在使用的C库的回调.C库设置如下的回调:

typedef int (*functionPointer_t)(myType1_t*, myType2_t*, myType3_t*);

setCallback(param1, param2, functionPointer, param4)
Run Code Online (Sandbox Code Playgroud)

我想使用boost :: bind(如果可能的话)传入函数指针.我希望指向的函数是实例化类的成员,而不是静态成员.例如

Class A {
 public: 
  A();
 protected:
  int myCallback(myType1_t*, myType2_t*, myType3_t*); //aka functionPointer_t
}
Run Code Online (Sandbox Code Playgroud)

可以使用boost :: bind和boost :: function来完成吗?Per 如何将类成员函数作为回调传递?(第3个答案)似乎我可以声明以下内容(某处或作为typedef):

boost::function<int (A*, myType1_t*, myType2_t*, myType3*> myCallbackFunction
Run Code Online (Sandbox Code Playgroud)

然后在A(ctor)的某处调用boost :: bind在该类型上,并将其传递给C库调用.

这可能吗,还是我不在基地?非常感谢.

c++ boost boost-bind boost-function

7
推荐指数
1
解决办法
1万
查看次数

在嵌入式环境中使用C++

今天我和一位同事进行了一次非常有趣的对话,其中一个主题让我在今晚思考和谷歌搜索.在嵌入式环境中使用C++(而不是C).环顾四周,似乎有一些好的交易支持和反对C++提供的功能,但其他人迈尔斯显然支持它.所以,我想知道谁能够阐明这个话题,以及社区的普遍共识是什么.

c++ embedded

6
推荐指数
3
解决办法
3037
查看次数

序列化和反序列化位字段

我已经递交了一份文件,该文件定义了一组通过串行通信信道传输和接收的消息.我想将传入的消息和反序列化为对象,并序列化我的出站消息.线路上的编码是建立的并且是不可改变的,并且由报头中的各种位域和不同的有效载荷组成,例如,

class Message{
int msg_num : 7
int dest_addr : 4
bool SRR : 1
bool IDE : 1
int source_addr : 6
//... and so on...
}
Run Code Online (Sandbox Code Playgroud)

我看了一下使用protobufs,但似乎建立了他们的varint编码方法.我也看过boost-serialization,但根据我到目前为止所读到的内容,编码是如何完成的还不完全清楚.

那么,有几个问题:

  • 我可以使用boost-serialization将我的bytestream转换为对象吗?
  • 随着目标不是为推出自己的程序序列化(维修乱),有没有完成我的任务优选机制(例如,一个自定义的升压序列化存档,我还没有发现的另一种方法)

c++ serialization protocol-buffers boost-serialization

6
推荐指数
1
解决办法
3229
查看次数

使用std :: map作为关联数组

所以,我使用std :: map作为关联数组.地图声明如下:

std::map<int, CustomClass*> CustomContainer;
Run Code Online (Sandbox Code Playgroud)

稍后,我使用CustomContainer对象作为关联数组,例如,

CustomClass* pClass = CustomContainer[ID]
Run Code Online (Sandbox Code Playgroud)

Josuttis说:

如果使用键作为索引,但尚未存在任何元素,则会自动将新元素插入到地图中.new元素的值由其类型的默认构造函数初始化.因此,要使用此功能,您不能使用没有默认构造函数的值类型

地图的值是CustomClass*类型.该值是默认为NULL,还是未定义?(我认为它不会,因为"指针"不是基本的数据类型).我认为它也会依赖于构造函数和那里的行为....思想???

CustomClass的唯一构造函数如下所示:

CustomClass::CustomClass(ClassA param1, ClassB param2, ClassC param3, ClassD param4)
:privateClassA(param1),
privateClassB(param2),
privateClassC(param3),
privateClassD(param4)
{

}
Run Code Online (Sandbox Code Playgroud)

非常感谢!

c++ stl

1
推荐指数
2
解决办法
2289
查看次数