小编Chr*_*ews的帖子

使用Boost :: Signals for C++ Eventing的完整示例

我知道boost.org上的教程解决了这个问题: Boost.org Signals Tutorial,但这些例子并不完整,有些过于简化.那里的例子没有显示包含文件,代码的某些部分有点模糊.

这就是我需要的:
ClassA引发多个事件/信号
ClassB订阅这些事件(多个类可以订阅)

在我的项目中,我有一个较低级别的消息处理程序类,它将事件引发到业务类,该业务类对这些消息进行一些处理并通知UI(wxFrames).我需要知道这些可能是如何连线的(什么顺序,谁叫谁等).

c++ boost-signals

56
推荐指数
3
解决办法
5万
查看次数

c ++数学库pow()函数的时间复杂度?

我想知道用c ++构建的pow()函数的最坏情况时间复杂度是多少?

c++ time-complexity

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

C++线程安全映射

有谁知道我在哪里可以找到包装a std::map并使其线程安全的implimentation ?当我说线程安全时,我的意思是它只提供对地图的串行访问,一次一个线程.最理想的是,此映射应仅使用标准库和/或boost构造.

c++ collections dictionary stdmap thread-safety

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

Pimpl成语指向可配置的实现

我已经读过Pimpl有利于二进制兼容性,接口有利于轻松切换实现.我需要结合这两种技术,以便我的应用程序能够通过配置文件切换底层实现.

以下是我当前设计的布局:

Foo类:提供面向客户的API,我很担心ABI兼容性这里
一流的IFoo:接口类(所有的纯虚方法,虚析构函数)
类Vendor1Foo:实现IFoo的,使用的供应商1的库
类Vendor2Foo:实现IFoo的,使用供应商2的图书馆

通过不使用pimpl并严格使用接口,客户端代码可能如下所示:

IFoo* foo = new Vendor1Foo();
Run Code Online (Sandbox Code Playgroud)

问题是我的客户端代码根本无法了解Vendor1或Vendor2,而Foo只是我必须执行此操作的众多类之一.

我正在尝试做的所有概念如下:

class foo
{
  private:
  QScopedPointer<IFoo> pimpl;
  void initImpl();  // Reads from QSettings and initializes pimpl
}
Run Code Online (Sandbox Code Playgroud)

有什么想法可以优雅地解决这个问题吗?

我希望能够提出一些宏或模板类/方法来帮助标准化我如何处理这个并最大限度地减少违反DRY.

模板类可以作为一个辅助性PIMPL像香草萨特的大上广义PIMPL方法对C++ 11:herbsutter.com/gotw/_101,它也必须包含逻辑实例根据配置的正确实施

这里有pimpl成语,桥梁模式和工厂模式的元素.在上面的例子中,initImpl()可以被认为是一个工厂方法.我正在寻找可能会或可能不会使用所有这些模式的解决方案.

我已经看过c ++ pimpl习语:实现取决于模板参数以及SO上的大多数pimpl习语问题.标题似乎很有希望,但它对我的特定用例没有帮助.

我不能使用C++ 11并使用Qt. D-Pointers无法解决我的问题,因为它们绑定到单个实现.

c++ qt pimpl-idiom interface factory-pattern

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

获取 wxTextCtrl 点击事件的简单方法?

当用户单击 wxTextCtrl 时是否有一种简单的方法来处理?阅读文档wxTextCtrl后,我发现没有单击或双击事件。我从问题wxWidgets:检测自定义控件上的单击事件中了解到 wxWidgets 中没有“单击”事件之类的东西,因此一个简单的鼠标按下事件就可以了。

示例答案:

来自:wx 维基

    textCtrl->Connect(wxEVT_LEFT_DOWN,
              wxMouseEventHandler(MyClass::OnClick), NULL, this );
Run Code Online (Sandbox Code Playgroud)

wxwidgets wxtextctrl

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

标记类/方法在C++中已过时或已弃用

有没有一种方法可以将C++中的方法/类标记为过时的?

在c#中你可以写:

[Obsolete("You shouldn't use this method anymore.")]
void foo() {}
Run Code Online (Sandbox Code Playgroud)

如果重要的话我使用GNU工具链/ Eclipse CDT.

c++ compiler-construction attributes

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

通过主动FTP克隆git存储库

我是一名分支办公室工作人员,已将我现有的仓库上传到我公司中央办公室的ftp服务器.中央办公室正在使用微软的ftp服务器.我无权在服务器上安装任何东西,只能使用支持主动模式ftp的真实ftp客户端连接/浏览到ftp服务器.

我尝试使用以下命令行进行克隆:

git clone ftp://companyDomain\username@ftp.company.com/project.repo/.git 
git clone ftp://username@company.com@ftp.company.com/project.repo/.git
git clone ftp://username%40company.com@ftp.company.com/project.repo/.git
git clone ftp://username:password@ftp.company.com/project.repo/.git
Run Code Online (Sandbox Code Playgroud)

我收到以下错误消息:

错误:连接失败ftp.company.com:21; 访问ftp://companyDomain\username@ftp.company.com/project.repo/.git/info/refs 致命错误时没有错误 :HTTP请求失败

输入上述命令后,我会立即收到提示输入密码的提示.我输入密码,一段时间过去然后我收到了上面的错误信息.

要完全清楚我不打算将我的源代码的头版推送到FTP服务器进行部署,所以像git-ftp,https://github.com/resmo/git-ftp这样的东西没有帮助我出去了.我想要做的是在ftp服务器上拥有我的repo,我的小团队中的每个人都能够在ftp服务器上推送/获取对repo的更改.

git是否支持主动FTP?这是怎么回事?

谢谢,克里斯

git ftp clone

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