読み込みがたくさん行われた後に、hereとhereのコードを読み込むことができません。共有オブジェクトから外部クラスメンバーを呼び出す
私は2つのクラスを持って、FIFO:
#ifdef __cplusplus
extern "C" {
#endif
class Fifo
{
public:
Fifo(int len);
~Fifo();
void AddTokens(void* buffer, unsigned len);
private:
// some variables here
};
#ifdef __cplusplus
}
#endif
と別のクラスのProcess_Wrapper:ここに問題がある
#ifdef __cplusplus
extern "C" {
#endif
class Process_Wrapper
{
public:
Process_Wrapper(const std::string process_name);
Fifo* GetOutputPortIDtoFifoMap(int portID);
virtual ~Process_Wrapper();
protected:
private:
//some variables here
};
#ifdef __cplusplus
}
#endif
クラスFifo
の初期化されたオブジェクトへのポインタを返すProcess_Wrapper::GetOutputPortIDtoFifoMap
メンバ関数。
共有オブジェクト(.so)があり、クラスFifo
とProcess_Wrapper
のヘッダーでコンパイルされています。つまり、.soファイルはこれらのクラスへのインターフェイスを認識します。
このファイルは、Process_Wrapper
(Process_Wrapper::function2
)というメンバー関数から呼び出され、.soのポインタ-this
に渡されます。だから、私は共有オブジェクトがクラスProcess_Wrapper
に関するすべてを知っていると仮定します。
.soファイルでは、メンバー関数Process_Wrapper::GetOutputPortIDtoFifoMap
を呼び出そうとしていますが、明らかに機能しません。だから、私が試した:
p1->wptr
が正しく
Process_Wrapper
オブジェクトへのポインタを返す
Fifo* (Process_Wrapper::*GetFifoMapping)(int) = p1->wptr->GetOutputPortIDtoFifoMap;
。
私はここで迷っています。私はこのコンセプトにはまったく新しいので、その例は直接質問に答えません。それをどうやってやるの?
また、私はC++ 0x/C++ 11を使用しているので誰も私に(できれば)std :: bind、またはmem__fun_refを使って解決策を教えてもらえますか?
編集:さて、私は私は私の質問を絞り込むことができると思う:私はクラスMyclass
、このクラスのインスタンスであるオブジェクトmyobject
を、持っています。 Myclass
にはメンバ関数があり、いくつかの引数をとり、タイプPTRTYPE
のポインタを返します。 Myclass
のメンバ関数を他の関数に渡すように抽出するにはどうすればよいのですか?通常の関数へのポインタとして使用することができます。具体的には、次のようにします。メンバー関数へのバインドされたポインタから関数ポインタを抽出するにはどうすればよいですか?
メソッドポインタを渡したいだけですか? – Geoffroy
C++をどこで学びましたか? – StackedCrooked
"メンバー関数へのバインドされたポインタから関数ポインタを抽出するにはどうすればよいですか?"できません。 –