相关疑难解决方法(0)

C++ 指向成员函数的指针,替换 __closure

不久前,Borland 在他们的 BCB 环境中引入了 C++ 语言的扩展。这个扩展是一个 __closure 关键字。问题是,是否可以用普通 C++ 或 C++11 实现此类功能?如果您不熟悉 __closure 关键字,下面的代码在注释中提供了解释。

提前致谢!托雷诺

#include <stdio.h>

// __closure keyword is used here !
typedef void (__closure * MemberCallback)(int x, int y, int z);

class A
{
    private:

        MemberCallback callback;


    public:

        A() : callback(NULL)
        {
        }

        void setCallback(MemberCallback newCallback)
        {
            callback = newCallback;
        }

        void call(int x, int y, int z)
        {
            if(callback)
                callback(x, y, z);
            else
                printf("NOT SET(%i, %i, %i)\n", x, y, z);
        }
};

class B
{
    public: …
Run Code Online (Sandbox Code Playgroud)

c++ closures pointers member-pointers c++11

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

传递成员函数时替代std :: bind

我有一些我想要基准的功能.我希望能够将它们传递给基准测试功能.以前我已经将一个函数指针和对象的引用传递给了测试函数,就像这样

template<typename T>
void (T::*test_fn)(int, int), T& class_obj, )
Run Code Online (Sandbox Code Playgroud)

目前我有这个

#include <iostream>
#include <functional>
using namespace std::placeholders;

class aClass
{
public:
    void test(int a, int b)
    {
        std::cout << "aClass fn : " << a + b << "\n";
    }

};

class bClass
{
public:
    void test(int a, int b)
    {
        std::cout << "bClass fn : " << a * b << "\n";
    }

};

// Here I want to perform some tests on the member function
// passed in …
Run Code Online (Sandbox Code Playgroud)

c++ c++14

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

标签 统计

c++ ×2

c++11 ×1

c++14 ×1

closures ×1

member-pointers ×1

pointers ×1