メンバー関数へのポインタを、後でプログラムで関数を呼び出すために使用する構造体に格納しようとしています。メンバー関数をC++で関数ポインタとして格納する際にエラーが発生しました
// abc.h
namespace XYZ {
typedef void func(const uint8_t *buf, int len);
struct holder
{
// other members
func * storePtr;
}
} // end of namespace
他のファイルのように:このような
何か
// pqr.h
#include abc.h
namespace XYZ {
class pqr {
// data members and other functions
void func1(const uint8_t *buffer, int length);
void func2(func *section);
void func3();
}
} // end of namespace
は今私のcppファイルには、私の構造体メンバーstorePtr
// app.cpp
#include pqr.h
void pqr::funct3()
{
// Do something
func2(func1);
}
void pqr::func2(func * section)
{
holder h;
h.storePtr = section;
}
にこの関数func1のインスタンスを保存する必要がありますしかし、 "func2(func1);という行でコンパイルエラーが発生しています。 「エラーC3867: 『PQR :: func1の』:引数リストを欠落している関数呼び出し、使用 『& PQR :: func1の』メンバへのポインタを作成する」として、私が使用している
を& PQR ::範囲を定義するのではなく、それはまた私の問題を解決しないし、私は何をすべきか理解できません。メンバ関数へ
しかし、 ? 作成した構造体を保存し、それを後で使用して関数を呼び出すとします。 – Garfield
静的でないメンバ関数の場合は、常にオブジェクトを呼び出す必要があります。オブジェクトは関数の暗黙のパラメータです。構造体にオブジェクトとポインタを保存するか、静的なメンバを使うことができるように全体のアーキテクチャを変更するか、単純な関数を使用します。 – MiMo