固有行列の operator() 関数への関数ポインタが必要です。具体的には、単一のインデックスを取る operator() Eigen の VectorXi 行列クラスです。つまり、呼び出すときに使用している演算子は次のとおりです。
VectorXi V(1);
...
VectorXi::Index i = 0;
VectorXi::Scalar& vi = V(i); // <-- this one
私が試したことは次のとおりです。
VectorXi::Scalar& (*value_at_i)(VectorXi::Index i ) = &VectorXi::operator();
しかし、これは私に非常に長いエラーを与えます:
...: error: no matches converting function ‘operator()’ to type ‘int& (*)(Eigen::DenseIndex)’
/usr/local/include/eigen3/Eigen/src/Core/DenseCoeffsBase.h:124: error: candidates are: typename Eigen::internal::conditional<(bool)((Eigen::internal::traits<T>::Flags & Eigen::LvalueBit)), const typename Eigen::internal::traits<T>::Scalar&, typename Eigen::internal::conditional<Eigen::internal::is_arithmetic<typename Eigen::internal::traits<T>::Scalar>::value, typename Eigen::internal::traits<T>::Scalar, const typename Eigen::internal::traits<T>::Scalar>::type>::type Eigen::DenseCoeffsBase<Derived, 0>::operator()(typename Eigen::internal::traits<T>::Index, typename Eigen::internal::traits<T>::Index) const [with Derived = Eigen::Matrix<int, -0x00000000000000001, 1, 0, -0x00000000000000001, 1>]
/usr/local/include/eigen3/Eigen/src/Core/DenseCoeffsBase.h:184: error: typename Eigen::internal::conditional<(bool)((Eigen::internal::traits<T>::Flags & Eigen::LvalueBit)), const typename Eigen::internal::traits<T>::Scalar&, typename Eigen::internal::conditional<Eigen::internal::is_arithmetic<typename Eigen::internal::traits<T>::Scalar>::value, typename Eigen::internal::traits<T>::Scalar, const typename Eigen::internal::traits<T>::Scalar>::type>::type Eigen::DenseCoeffsBase<Derived, 0>::operator()(typename Eigen::internal::traits<T>::Index) const [with Derived = Eigen::Matrix<int, -0x00000000000000001, 1, 0, -0x00000000000000001, 1>]
/usr/local/include/eigen3/Eigen/src/Core/DenseCoeffsBase.h:405: error: typename Eigen::internal::traits<T>::Scalar& Eigen::DenseCoeffsBase<Derived, 1>::operator()(typename Eigen::internal::traits<T>::Index) [with Derived = Eigen::Matrix<int, -0x00000000000000001, 1, 0, -0x00000000000000001, 1>]
/usr/local/include/eigen3/Eigen/src/Core/DenseCoeffsBase.h:347: error: typename Eigen::internal::traits<T>::Scalar& Eigen::DenseCoeffsBase<Derived, 1>::operator()(typename Eigen::internal::traits<T>::Index, typename Eigen::internal::traits<T>::Index) [with Derived = Eigen::Matrix<int, -0x00000000000000001, 1, 0, -0x00000000000000001, 1>]
この演算子への関数ポインタを取得する正しい方法は何ですか?