void*params有名字隐藏吗
is there name hiding for void* params?
我需要将一个成员函数传递给gsl_function,并使用本文[link]中描述的包装器(函数指针问题。如何从C++类有效地与C API(即gsl(接口?(。它起作用了,但当我试图理解它时,我有点困惑。基本上,我在代码中标记了三个void*参数ptr_par_0
、ptr_par_1
和ptr_par_2
,很明显ptr_par_0=patr_par_1
,但它们似乎从未在代码中初始化过,是真的吗?ptr_par_2
确实被初始化为*this
,但是ptr_par_0
&ptr_par_1
是foo_wrapper
函数的局部变量,所以我认为它们应该隐藏ptr_par_2
,需要自己初始化。我想可能有一些我不知道的事情,谢谢你提前澄清。
class MyClass
{
double foo(double x)
{
...
}
static double foo_wrapper(double x, void *params) //ptr_par_0
{
return static_cast<MyClass*>(params)->foo(x); //ptr_par_1
}
double bar(double x)
{
...
gsl_function F;
F.function=&MyClass::foo_wrapper;
F.params=this; //ptr_par_2
// invoke GSL function passing in F
...
}
};
将注释转化为答案:
GSL将调用类似F.function(x, F.params);
(在GSL_FN_EVAL(&F,x)
中(的
所以MyClass::foo_wrapper(x, this_from_bar)
相关文章:
- C++使用params创建线程函数会导致转换错误
- 这是我尝试让用户将值输入到数组中.然后将其隐藏为大量的星号
- 结构和双指针隐藏在其他结构中,多层混淆
- 在 cpp 文件中隐藏采用模板参数引用的方法
- 参数包构造函数在类模板中隐藏用户定义的转换
- 如何等待窗口隐藏在Qt中?
- 如何使用类型别名从模板化类中隐藏模板列表
- 在设计 SDK 时,我是否应该在 C++ 头文件中完全隐藏内部类?
- 名称隐藏对静态函数继承的实例使用
- 在 Linux 中使用 ioctl() 获取隐藏功能报告时,零字节消失
- 从多个模板化基类派生时出现"隐藏重载的虚函数"警告
- 如何在 Omnet++ 5.6.1 中隐藏箭头?
- 在C++中隐藏键盘记录器的控制台窗口
- 从静态库使用时隐藏不透明结构的内容
- 隐藏用于聚合初始化的空基类
- 使用智能指针指向 C 库中的结构,该结构通过 typedef 隐藏实现(即不完整的类型)
- Qt中的包装连接方法隐藏了编译器所需的信息
- 隐藏重载虚拟功能的模板化访客:SFINAE 在使用?
- 在 ui 文件中隐藏 QTabWidget 中的单个选项卡窗格?
- void*params有名字隐藏吗