将 C++ 函数指针转换为 c 函数指针

Convert C++ function pointer to c function pointer(将 C++ 函数指针转换为 c 函数指针)
本文介绍了将 C++ 函数指针转换为 c 函数指针的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

我正在使用 C 库开发 C++ 应用程序.我必须向 C 库发送一个指向函数的指针.

I am developing a C++ application using a C library. I have to send a pointer to function to the C library.

这是我的课:

 class MainWindow : public QMainWindow {  
     Q_OBJECT  
     public:  
     explicit MainWindow(QWidget *parent = 0);  
     private:  
     Ui::MainWindow *ui;
     void f(int*);

 private slots:
     void on_btn_clicked(); 
};

这是我的 on_btn_clicked 函数:

This is my on_btn_clicked function:

void MainWindow::on_btn_clicked()
{
    void (MainWindow::* ptfptr) (int*) = &MainWindow::f;

    c_library_function(static_cast<void()(int*)>(ptfptr), NULL);

}

C 函数应该得到一个指向这样的函数的指针:void f(int*).但是上面的代码不起作用,我无法成功将我的 f 成员函数转换为所需的指针.

The C function should get a pointer to a such function : void f(int*). But the code above doesn't work, I cannot succeed to convert my f member function to the desired pointer.

有人可以帮忙吗?

推荐答案

如果我没记错的话,只有类的静态方法可以通过指向函数语法的普通"C 指针访问.所以尽量让它静态.指向类的方法的指针需要额外的信息,例如对象"(this)对于纯 C 方法没有意义.

If I recall it correctly, Only static methods of a class can be accessed via "normal" C pointer to function syntax. So try to make it static. The pointer to a method of a class needs extra information, such as the "object" (this) which has no meaning for a pure C method.

此处显示的常见问题有很好的解释和您的问题的可能(丑陋)解决方案.

The FAQ shown here has good explanation and a possible (ugly) solution for your problem.

这篇关于将 C++ 函数指针转换为 c 函数指针的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

相关文档推荐

Could I ever want to access the address zero?(我可以想访问地址零吗?)
C++ Access derived class member from base class pointer(C++ 从基类指针访问派生类成员)
Weird Behaviour with const_cast(const_cast 的奇怪行为)
Are pointer variables just integers with some operators or are they quot;symbolicquot;?(指针变量只是带有某些运算符的整数还是“符号?)
Modifying a char *const string(修改 char *const 字符串)
Modifying a const int in C++(修改 C++ 中的 const int)