小编Rod*_*ddy的帖子

使用哪些COM智能指针类?

我对用于C++编程的COM智能指针类的选择感到困惑:

我知道有三个四个:

  • CCOMPtr 来自ATL
  • _com_ptr_t来自MS Com支持类
  • TComInterface (因为我正在使用C++ Builder 2009)
  • CCOMQIPtr,(我之前忘记了)

我已经阅读了前两个错误与异常处理差异,但TComInterface似乎完全没有记录.根据我的发现,前两个似乎都有问题或"出乎意料"的行为.

理想情况下,我想要一些干净而现代的C++,但boost::com据我所知不存在......

我需要控制来自其他供应商的应用程序.它们通过TLB文件提供COM接口.

c++ com c++builder

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

选择不可复制对象的构造函数

假设我有一个不可复制的类,其中包含多个类似的构造函数

class Foo: boost::noncopyable
{
  public:
    Foo(std::string s) {...};  // construct one way        
    Foo(int i) {...};  // construct another way
 }
Run Code Online (Sandbox Code Playgroud)

现在,我想构造一个对象,并选择在运行时使用哪个构造函数:

我可以用这样的指针做到: -

boost::shared_ptr<Foo> f;

if (condition)
  f.reset(new Foo(myString));
else
  f.reset(new Foo(myInteger));

// common code follows
f->doSomethingComplicated(...);
Run Code Online (Sandbox Code Playgroud)

但这感觉很麻烦而且很慢.是否有一种简单的方法可以选择对象的构造函数而无需动态分配?


更多细节:Foo上面的类只是为了说明问题.涉及的实际类是Windows Gdiplus::Bitmap- http://msdn.microsoft.com/en-gb/library/windows/desktop/ms534420(v=vs.85). ASPX

c++ boost noncopyable multiple-constructors

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

可以在同一台计算机上的多个应用程序接收UDP广播吗?

例如,假设我有一个"智能"温度计,每隔N秒将当前温度广播为UDP数据报.

现在,我可以编写一个侦听这些消息并以图形方式显示它们的客户端,并且我可以让该客户端同时在多台计算机上运行.到目前为止没问题.

但是,当我尝试在同一台Windows计算机上运行客户端的两个实例时,我会遇到有关尝试" 绑定到已使用的端口 "的错误.

这是:-

  • 答:就像所有操作系统上的UDP广播一样?
  • B:Windows网络堆栈的限制?
  • C:或者,可能是我正在阅读数据报的方式中的一个错误?

如果A或B,有什么办法围绕它.

如果是C,那么我会发布一些代码..

networking udp tcp broadcast

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

如果函数指针不需要&符号,为什么boost :: bind需要一个?

我一直认为函数指针不需要&符号:

函数指针需要一个&符号

然而,我所看到的每个使用的例子都boost::bind显示了一个,而我的编译器 - 在大多数情况下 - 如果省略则会给出一个通常难以理解的错误信息.

synchronize(boost::bind(&Device::asyncUpdate , this, "ErrorMessage"));  // Works

synchronize(boost::bind(Device::asyncUpdate , this, "ErrorMessage"));   // Fails
Run Code Online (Sandbox Code Playgroud)

假设boost::bind第一个参数基本上是函数指针,我错了吗?

c++ function-pointers boost-bind

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

TControlState.csDesignerHide与TControlStyle.csNoDesignVisible

VCL似乎提供了两种隐藏表单设计者控件的机制:TControlState.csDesignerHideTControlStyle.csNoDesignVisible.

就IDE而言,它们之间有什么区别?你应该在什么时候使用?

delphi vcl

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

Windows Installer应该创建桌面快捷方式图标吗?

我讨厌自动创建的桌面快捷方式图标,但有些人似乎认为,除非你的安装程序使你的桌面混乱,否则它无法正常工作!

对于Windows有明确的指导方针,还是完全个人选择?

(安装程序中有一个"在桌面上留下杂乱?"复选框是一个选项,但在我看来,这只会让安装程序更加混乱......

windows installer desktop icons

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

如何编写"好"的用户界面文本?

许多应用程序因其用户界面中的"书写"质量而失望:通常,拼写错误,语法不一致,语气不一致,更糟糕的是,"幽默"是常见的违规者.

是否有良好的资源可以帮助开发人员编写UI消息,为客户提供专业和积极的印象,即使您的代码在手推车中下地狱?

谢谢,所有 - 这里有一些很棒的资源,所以我将CW这个问题.我接受了Adam Sill的回答,因为它是(作为桌面应用的开发者)我发现最相关的那个.

user-interface

10
推荐指数
2
解决办法
1643
查看次数

启用S​​TL迭代器调试真正做了什么?

我通过定义在应用程序中启用了迭代器调试

_HAS_ITERATOR_DEBUGGING = 1
Run Code Online (Sandbox Code Playgroud)

我期待这真的只是检查矢量边界,但我感觉它做的远不止于此.实际上正在执行哪些检查等?

顺便提一下Dinkumware STL.

c++ iterator stl

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

DirectShow与Media Foundation进行视频捕捉?

我正在尝试在视频捕获/监控/流媒体应用程序中选择这两个API,我不确定哪个是最好的选择.

一点背景:

  • 我需要它与各种视频采集卡/加密狗一起使用.
  • 该应用程序可能会使用C++开发,因此本机API至关重要
  • 性能很重要,因为我需要处理多个视频流

一些谷歌搜索给我的印象是

  • MF仅支持Win 7上的视频捕获
  • Directshow得到更好的支持,但会变得过时
  • MF可以在某些应用中提供更好的性能

MF认为前进更好,但我担心如果MF没有"赶上"并且Directshow仍然是首选的API,那么最终会陷入技术死胡同.建议和建议,请...

windows directshow ms-media-foundation

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

哪个STL容器用于基于密钥访问的有序数据?

假设我有一个Person对象的集合,每个对象看起来像这样:

class Person 
{
  string Name;
  string UniqueID;
}
Run Code Online (Sandbox Code Playgroud)

现在,对象必须存储在一个容器中,这个容器允许我对它们进行排序,这样我就可以给项目X轻松找到项目X + 1和X-1.

但是,我还需要基于UniqueID的快速访问,因为集合将很大并且线性搜索不会削减它.

我当前的'解决方案'是将std :: list与std :: map结合使用.该列表包含Persons(用于有序访问),该映射用于将UniqueID映射到对列表项的引用.更新"容器"通常涉及更新地图和列表.

它有效,但我觉得应该有一个更聪明的方法,也许boost:bimap.建议?

编辑:关于我对"订购"的要求存在一些困惑.为了解释,对象从文件顺序流式传输,容器中项目的"顺序"应与文件顺序匹配.订单与ID无关.

c++ containers stl

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