C++ lib静态库的接口函数,可以返回一个指针吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ lib静态库的接口函数,可以返回一个指针吗?相关的知识,希望对你有一定的参考价值。

如题

参考技术A 这个必须可以呀。你可以让接口函数返回一个值,也可以利用函数参数进行赋值返回。 参考技术B 当然可以。
但是需要确保这个地址的生命周期,不要引用到已经释放掉的地址。本回答被提问者采纳
参考技术C 可以,这个你可以参考字符串函数

C++:如何返回指向非静态成员函数的指针?

【中文标题】C++:如何返回指向非静态成员函数的指针?【英文标题】:C++: How to return a pointer to a non-static member function? 【发布时间】:2020-05-23 20:27:55 【问题描述】:

我想做这样的事情:

typedef int(A::*f_ptr)(int);
class A

    int f1(int a) /*do something*/ 
    int f2(int a) /*do something else*/ 
    f_ptr pick_f(int i)
    
         if(i)
              return this->f1;
         return this->f2;
    

原因是我希望 A 类的实例保存某些有用的变量,然后根据用户输入选择我需要的成员函数。但这不起作用,因为我得到“指向绑定函数的指针只能用于调用函数”。如何编写返回指向非静态成员函数的指针的函数?

【问题讨论】:

看到这个question。 【参考方案1】:

你需要返回成员函数的地址,像这样:

f_ptr pick_f(int i)
  
  if(i)
    return &A::f1;
  return &A::f2;

或等效的简洁版本:

f_ptr pick_f(int i)

  return i ? &A::f1 : &A::f2;

【讨论】:

为了展开,您在这里所做的是“解绑”它们。也就是说,不再有“绑定”this 指针。因此出现错误消息。

以上是关于C++ lib静态库的接口函数,可以返回一个指针吗?的主要内容,如果未能解决你的问题,请参考以下文章

静态库 动态库 调用

C++:如何返回指向非静态成员函数的指针?

我可以像在 c++ 中使用指针一样修改函数中的变量而不在 python 中返回吗

VS2019 C++动态链接库的创建使用

在构建我的 C++ 可执行文件 (gcc) 时,我可以获得所有链接库的报告吗? (包括静态链接)

android 怎么引用一个静态库