相关疑难解决方法(0)

5年后,还有比"最快可能的C++代表"更好的东西吗?

我知道"C++代表"的主题已经完成,而http://www.codeproject.comhttp://stackoverflow.com都深深地涵盖了这个问题.

一般来说,似乎Don Clugston最快的代表是许多人的首选.还有一些其他流行的.

但是,我注意到这些文章中的大多数都是旧的(大约在2005年),并且许多设计选择似乎都是考虑到VC7之类的旧编译器.

我需要一个非常快速的代理实现音频应用程序.

我仍然需要它可移植(Windows,Mac,Linux),但我只使用现代编译器(VC9,VS2008 SP1和GCC 4.5.x中的编译器).

我的主要标准是:

  • 一定要快!
  • 它必须与更新版本的编译器向前兼容.我对Don的实施有一些疑问,因为他明确表示它不符合标准.
  • 可选地,KISS语法和易用性很好
  • 多播会很好,虽然我确信在任何委托库中构建它真的很容易

此外,我真的不需要异国情调的功能.我只需要一个好的旧指针到方法的东西.无需支持静态方法,自由函数或类似的东西.

截至今天,推荐的方法是什么?仍然使用唐的版本?或者是否存在关于另一种选择的"社区共识"?

我真的不想使用Boost.signal/signal2,因为它在性能方面是不可接受的.对QT的依赖也是不可接受的.

此外,我在google搜索时看到了一些较新的库,例如cpp-events,但我找不到任何来自用户的反馈,包括SO.

c++ performance delegates

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

如何在成为类数据成员时调用指向成员函数的指针?

struct B
{
  void (B::*pf)(int, int);  // data member
  B () : pf(&B::foo) {}
  void foo (int i, int j) { cout<<"foo(int, int)\n"; } // target method
};

int main ()
{
  B obj;
  // how to call foo() using obj.pf ?
}
Run Code Online (Sandbox Code Playgroud)

在上面的测试代码中,pf是一个数据成员B.调用它的语法规则是什么?它应该是直截了当的,但我没有得到正确的匹配.例如,如果我尝试,obj.*pf(0,0);那么我得到:

error: must use ‘.*’ or ‘->*’ to call pointer-to-member function in ‘pf (...)’, e.g. ‘(... ->* pf) (...)’
Run Code Online (Sandbox Code Playgroud)

c++ member-function-pointers member-variables

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

向量的函数指针

我正在尝试编写Gameboy模拟器代码,我想使用函数指针向量来调用正确的函数,而不是执行long switch语句.

例如,如果程序计数器指向0x00(在内存中),则向量的第一个元素是NOP,因此调用void NOP(); 但我无法想象如何调用这些函数.

Z80.h

#include <vector>
using namespace std;

class Z80;
typedef void (Z80::*function_t)();

class Z80
{
public:
  vector<function_t> fmap;
...
...
};
Run Code Online (Sandbox Code Playgroud)

Z80.cpp

Z80::Z80()
{
    fmap = { &Z80::NOP, &Z80::LDBCnn, &Z80::LDBCmA};
}

void Z80::emulateCycle() {
    opcode = memory.readByte(r.pc);
    fmap[opcode]();     <---ERROR
    r.pc++;
}

void Z80::NOP() {

}
Run Code Online (Sandbox Code Playgroud)

这是错误:

IntelliSense: expression preceding parentheses of apparent call must have (pointer-to-) function type
Run Code Online (Sandbox Code Playgroud)

c++ arrays function-pointers vector

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