小编Jos*_*sef的帖子

通过良好的设计减少缓存未命中

如何在设计C++程序时减少可能的缓存未命中数?

内联函数每次都有帮助吗?或者只有当程序是CPU限制的时候才是好的(即程序是面向计算而不是面向I/O)?

c++ caching inline

22
推荐指数
2
解决办法
9310
查看次数

纯虚方法VS. 功能指针

最近我一直在设计Thread类库,我已经创建了一个Thread抽象类,如下所示:

class Thread {
public:
    run() { /*start the thread*/ }
    kill() { /*stop the thread*/ }
protected:
    virtual int doOperation(unsigned int, void *) = 0;
};
Run Code Online (Sandbox Code Playgroud)

真正的线程类将继承此抽象类并doOperation在其自己的逻辑中实现方法,类似于策略模式.

问题是我依赖于一个C后端库,它定义了在以下函数中运行线程:

int startThread(char* name, (int)(*)(unsigned int, void*), int, int, int, void*);
Run Code Online (Sandbox Code Playgroud)

如你看到的; 第二个参数是一个指向线程循环(main函数)的函数指针,这就是问题所在; 因为我使用这个C函数来启动run方法中的线程,所以我将地址传递doOperation给第二个参数,由于类型不匹配,这是无法完成的.

我试图用来reinterpret_cast返回指针,但我ISO-C++禁止返回未初始化函数成员的指针.我不知道如何克服这种冲突,使用静态方法是我猜的唯一解决方案,但它打破了我的设计模式!

c++ abstract-class design-patterns function-pointers

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