【发布时间】:2013-07-07 20:34:34
【问题描述】:
我有错误:
error: cannot convert 'AudioEngine::input' from type 'mad_flow (AudioEngine::)(void*, mad_stream*)' to type 'mad_flow (*)(void*, mad_stream*)'
我有枚举,
enum mad_flow AudioEngine::input(void *data, mad_stream *stream)
{
etc...
}
一个外部库正在调用它,
mad_decoder_init(&decoder, &player,
input, decode_header, decode_filter, process_output,
decode_error, 0 /* message */);
外部类需要输入,但我想保持我的引擎类为基础。我该怎么做?
非常感谢。
【问题讨论】:
-
您实际上是在问“我如何从 C 中调用成员函数?”?
-
可能。我真的不知道。
-
嗯,如果你真的不知道你在问什么,这将很难回答;)你能提供一些上下文(例如一些周围的代码)吗?
-
madSdecoder_init 来自 libmad,它非常希望以自己的方式枚举 - 即枚举 mad_flow 输入(void data, mad_stream 流)。但是,枚举在我的类中使用了变量,所以我需要将它包装在类中。
-
好的,简单看一下documentation 会发现
mad_decoder_init期待一个回调(即一个函数指针),而不是一个enum.