我一直在网上寻找一段时间,而且还没有发现任何与我的问题完全相同的内容。我使用了这个东西定义一个类:如何在C/C++中将typedef函数作为参数传递
typedef bool ProgressCallback(double progress);
有那么使用这个像这样的功能:
// The documentation says that it will call progress_callback()
// during the write where the progress parameter = percentage complete
void WriteToFile(char* filename, ProgressCallback* progress_callback)
正是我怎样调用这个函数?这主要是typedef语法引起了我的注意,因为通常将函数作为参数传递并不是那么困难。这是我尝试虽然:
// Apparently I can't just say "Progress Callback MyCallback{}"
// Since it gives me "function type may not come from a typedef" error
bool MyCallbackFunction(double progress){
return true;
}
void OtherFunction(){
// Can't assign. I get "a value type of bool (*)(double progress)" cannot be
// used to initalize an entity of type ProgressCallback*" error.
ProgressCallback* myfunction = MyCallbackFunction;
WriteToFile("Test.txt", myfunction);
}
很明显,我知道我这样做是不正确的。但这是我得到的最接近的。我完全不知道我应该如何将该参数传递给WriteToFile()。
任何帮助将不胜感激!
C没有类。 – melpomene
typedef只是将一个标识符声明为一个类型的别名。在这种情况下,该类型是特定的函数类型,并且您正在将指针传递给该类型的函数。您可以通过取消引用指针来调用指向函数来获取函数指示符,然后用它形成一个函数调用表达式:'(* progress_callback)(0.5)'。 –
[无法重现](http://coliru.stacked-crooked.com/a/cfb3cb3a017f5269)。请提供[mcve]。 – Angew