私はしばらくオンラインを見てきましたが、問題のようなものは何も見つかりませんでした。私はこの事は、定義されたクラスを使用しています: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