关于ffmpeg中avio_alloc_context函数所需要的回调函数封装问题

seakia_sakura 2014-02-12 02:32:29
我需要把avio_alloc_context()函数封装一下
其函数声明如下:


avio_alloc_context(unsigned char * buffer,
int buffer_size,
int write_flag,
void * opaque,
int(*)(void *opaque, uint8_t *buf, int buf_size) //读数据回调函数
int(*)(void *opaque, uint8_t *buf, int buf_size) //写数据回调函数
int64_t(*)(void *opaque, int64_t offset, int whence)
)


其中读回调函数read_packet函数如何封装到一个Video的类里面
我如果封装到

class Video
{
private:
read_packet(void *opaque, uint8_t *buf, int buf_size);
//剩余代码省略
};


这样的话,我调用

int Video::open_input_file()
{
//...
pb = avio_alloc_context(buffer, BUF_SIZE, 0, NULL, read_packet, NULL, NULL);
//....
}

的时候
这样弄得话VC报错是int (Video:: *)read_packet()的实参与int (*)read_packet()的形参不符
这样应该怎么处理呢?
初学C++的类
高手指导一下哈~~
...全文
488 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 6 楼 xiongjianke 的回复:
[quote=引用 5 楼 youngalmond11 的回复:] 楼主是怎么解决的,可以交流下么?谢谢!
声明为静态函数之后把类的指针穿进去不就可以使用非静态成员了。。。[/quote]正解
携剑的路人 2014-08-25
  • 打赏
  • 举报
回复
引用 5 楼 youngalmond11 的回复:
楼主是怎么解决的,可以交流下么?谢谢!
声明为静态函数之后把类的指针穿进去不就可以使用非静态成员了。。。
youngalmond11 2014-03-27
  • 打赏
  • 举报
回复
楼主是怎么解决的,可以交流下么?谢谢!
ztenv 版主 2014-02-13
  • 打赏
  • 举报
回复
引用 3 楼 u013435105 的回复:
[quote=引用 1 楼 lianshaohua 的回复:] 类成员函数与int(*)(void *opaque, uint8_t *buf, int buf_size)函数指针的声明不同; 奖类成员函数声明为静态的吧
有没有不声明成static的方法? 声明成static之后接下要调用的一个函数及其内部的变量都需要成静态了,这样会导致后面socket成为静态了,这个不是我所想要的。[/quote] 那就将函数声明为类的非成员函数吧;不过还是达不到你要的效果;
seakia_sakura 2014-02-12
  • 打赏
  • 举报
回复
引用 1 楼 lianshaohua 的回复:
类成员函数与int(*)(void *opaque, uint8_t *buf, int buf_size)函数指针的声明不同; 奖类成员函数声明为静态的吧
有没有不声明成static的方法? 声明成static之后接下要调用的一个函数及其内部的变量都需要成静态了,这样会导致后面socket成为静态了,这个不是我所想要的。
seakia_sakura 2014-02-12
  • 打赏
  • 举报
回复
引用 1 楼 lianshaohua 的回复:
类成员函数与int(*)(void *opaque, uint8_t *buf, int buf_size)函数指针的声明不同; 奖类成员函数声明为静态的吧
能不能大概讲一讲是个什么道理呢? 我没怎么学过C++ 只是大概知道,现在是现学现用
ztenv 版主 2014-02-12
  • 打赏
  • 举报
回复
类成员函数与int(*)(void *opaque, uint8_t *buf, int buf_size)函数指针的声明不同; 奖类成员函数声明为静态的吧

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧