派生クラスの関数メンバーを実装しています (基本クラスで仮想として宣言されています)。引数の 1 つは vectorXd で、操作の結果が格納される場所です。
「パラメーターとして固有型を取得する関数の記述」( http://eigen.tuxfamily.org/dox/TopicFunctionTakingEigenTypes.html ) を読み、そのハックはテンプレート化された関数に依存し、可能なパラメーターとして一般的な固有オブジェクトに焦点を当てています。私の場合、仮想とテンプレートを混在させることはできないようですので、うまくいかないと思います。
一方、私の引数は常に VectorXd 型になることがわかっており、関数内でサイズ変更が不要になるように、関数に入る前に適切なサイズにサイズ変更することもできます。ベクトルを const として参照渡しし、const_cast を使用して必要な変更を加える方法を試していますが、それでもリンク エラーが発生します。
エラー LNK2001: 未解決の外部シンボル "public: virtual void __thiscall problem::f(class method *,class Eigen::Matrix const &,class Eigen::Matrix const &)" (?f@problem@@UAEXPAVmethod@@ABV? $Matrix@N$0?0$00$0A@$0?0$00@Eigen@@1@Z)
ここで、'problem' は基本クラス、'f' は関数、'method' は別のクラスです (関数内にもその型のオブジェクトが必要です)。
私が持っている問題の定義では:
virtual void f(method *m, const Eigen::VectorXd &x, Eigen::VectorXd const &y);
派生: 問題の定義には、次のようなものがあります。
void f(method *m, const Eigen::VectorXd &x, Eigen::VectorXd const &y) {...};
「y」は、結果を保存する必要がある場所です。これを達成する方法について何か提案はありますか? ありがとうございます。