小编JP.*_*JP.的帖子

最快的C++信号/ Slot Lib没有依赖性

我将使用信号和插槽向上/向下传输5-10层对象的数据.这应该导致每秒几千个信号.这是"我点击一个按钮"的形式.我的所有物体也会在每100毫秒的时间内通过计时器发出信号,这样他们就可以进行一些处理了.

什么是最快的C++信号/插槽实现,它会很小,不需要其他库,如boost.(我需要保持二进制文件的总大小非常小).

我见过libSigC++,sigSlot,Cpp-Events,

c++ signals signals-slots

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

OpenSSL 静态库太大,有什么替代方法或方法可以减小其大小?

我使用了 OpenSSL 1.0 的预构建静态库,但它使我的二进制文件太大(在发布模式下将其大小增加约 800Kb)。

我不需要 OpenSSL 的大部分功能,例如 BIO,我使用自己的套接字,因此在代码中我只使用了几个 SSL_XXXXXXXXX 调用(SSL_accept(3) 或 SSL_connect(3)、SSL_read(3) 和 SSL_write) (3))

我唯一的要求是在 windows 上支持 SSLv2/v3 和 winsock,在 linux 上支持客户端和服务器端的套接字(对于 C++)

有没有办法让 OpenSSL 更小(也许通过自己编译),或者,作为最后的手段,任何其他好的但更轻巧的 SSL 库满足我的要求?lib 必须静态链接。

谢谢

c++ openssl static-libraries

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

Win32 事件与信号量

基本上我需要替换 Condition Variable 和 SleepConditionVariableCS,因为它只支持 Vista 和 UP。(对于 C++)

有人建议使用Semaphore,我也找到了CreateEvent。

基本上,我需要有一个线程等待 WaitForSingleObject,直到一个或多个其他线程告诉我有事情要做。

我应该在什么情况下使用信号量和获胜事件?

谢谢

c++ events winapi multithreading semaphore

5
推荐指数
1
解决办法
8331
查看次数

C++以任何方式将不同的模板化对象存储到同一个容器中

有什么黑客我可以用来做到这一点:

template <class TYPE>
class Hello
{
     TYPE _var;
};
Run Code Online (Sandbox Code Playgroud)

我想要一种存储方式

Hello<int> intHello and Hello<char*> charHello
Run Code Online (Sandbox Code Playgroud)

进入同一个容器,如队列/列表.

c++ templates

4
推荐指数
2
解决办法
2938
查看次数

C++ Header Guard问题

我正在制作一个小的C++框架,其中包含许多.h和.cpp.

我创建了一个包含所有.h文件的常规包含,例如:

framework.h

#include "A.h"
#include "B.h"
#include "C.h"
Run Code Online (Sandbox Code Playgroud)

每个.h标题都受到包含保护的保护

#ifndef A_HEADER
#define A_HEADER
...
#endif
Run Code Online (Sandbox Code Playgroud)

问题是,我希望能够在所有sub .h中包含"framework.h",但是它会导致很多编译器错误:

#ifndef A_HEADER
#define A_HEADER

#include "framework.h"
...
#endif
Run Code Online (Sandbox Code Playgroud)

如果相反,我使用每个子标头的真实头文件,而framework.h用于什么使用我的框架它工作正常..

我只想在所有sub .h中包含主标题,所以我不需要每次都包含所有依赖项.

谢谢 :)

c++ header include-guards include

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

QT插槽获得两次信号

在QT4.5中,

我使用QTableWidget,我已将信号QTableWidget :: itemClicked()连接到这样的自定义插槽:

connect(_table, SIGNAL(itemClicked(QTableWidgetItem*)), item, SLOT(sloItemClicked(QTableWidgetItem*)));
Run Code Online (Sandbox Code Playgroud)

我为添加到表中的每一行创建了这样的连接.

问题是插槽sloItemClicked不止一次被调用,似乎它被称为X时间,其中X是我表中的行数.

但它一直在呼唤同一行.(我收到的QTableWidgetItem是一样的).

这是一个问题,因为当单击该行时,我将其删除.所以下次调用时,QTableWidgetItem不再有效而且崩溃.

如果我只有一行,一切都按预期工作..

任何的想法?

谢谢

c++ qt qt4 signals-slots qtablewidget

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

C++宏没有替换所有值

我有以下2个宏:

#define SCOPED_ENUM_HEADER(NAME) struct NAME{ enum _NAME{
#define SCOPED_ENUM_FOOTER(NAME) };}; typedef NAME::_NAME NAMEtype;
Run Code Online (Sandbox Code Playgroud)

只有NAME的第一个实例被传递的NAME替换.它出什么问题了?

是以这样的方式使用:

 SCOPED_ENUM_HEADER(LOGLEVEL)
   UNSET,
   FILE,
   SCREEN
 SCOPED_ENUM_FOOTER(LOGLEVEL)
Run Code Online (Sandbox Code Playgroud)

c++ macros c-preprocessor

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

C++将隐藏的arg传递给类构造函数?

我想定义一个接受指向它的父类作为参数的指针的类,但是可以以某种方式传递它而不需要直接传递它,例如:

class Child
{
public:
   Child(Parent* hiddenArg);
};

class Parent
{
public:
   Child myChild;
};
Run Code Online (Sandbox Code Playgroud)

我知道这很奇怪,但是我正在制作自己的Signal/Slot实现,Child会定义一个信号,但我想得到父母,所以我可以使用它的事件调度程序......

c++

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