メンバ関数の関数ポインタを別のクラスに渡す必要があります。私はそれをコンパイルすることができませんでしたし、私は "classB :: classB(classA :: *)(std :: shared_ptr)"への未定義の参照を取得します。誰かがこれで私を助けることができますか?メンバ関数を関数ポインタに渡す
ありがとうございました。
classA{
string functionA(share_ptr<int>);
void functionB(){
classB* ptr = new classB(&classA::functionA);
}
}
//in other .h file
classA; //forward declaration
classB{
classB(string (classA::*funcPtr)(shared_ptr<int>); //constructor
}
私はそれが正しい構文であることが判明...それを持っている..私は再びそれをコンパイルする前に、いくつかの古いファイルをきれいにしていないだけということです。..その上で私の時間を無駄に... – Steveng
一つのことは、あなたのコンストラクタです閉じ括弧がありません。また、ヘッダーにclassBのコンストラクターの実装が表示されないため、.cppファイルを投稿した場合にも役立ちます。 – Will
-1質問に不正確かつ不完全な情報があります。コードは実際のコードではありません。コンパイルすべきではありません。提示されたコードは、あなたのリンクエラーが何をもたらすのかを言うのに十分なものではありません。 –