不久前,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) 我有一些我想要基准的功能.我希望能够将它们传递给基准测试功能.以前我已经将一个函数指针和对象的引用传递给了测试函数,就像这样
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)