我想通过重载多个运算符来增强gsl函数(例如gls_vector)。我的想法是在一个单独的命名空间中创建一个新类:
namespace gsl
{
class gsl_vector : public gsl_vector
{
};
}
现在我的问题是我需要一个构造函数。原始的gsl_vector没有这样的构造函数,因为它完全用C语言编写(根据http://www.boost.org/doc/libs/1_53_0/libs/numeric/odeint/doc/html/boost_numeric_odeint/odeint_in_detail/state_types__algebras_and_operations.html#boost_numeric_odeint.odeint_in_detail.state_types__algebras_and_operations.construction_resizing)。那么,我怎样才能为这个操作编写一个合适的构造函数,或者我的想法是不可能的呢? 谢谢!
答案 0 :(得分:0)
我认为从gsl_vector派生新类型不是一个好主意。它会增加更多问题然后它会有所帮助一点是gsl_vector是一个C结构。您无法轻松获取它的实例,因为通常需要调用gsl_vector_alloc。另一点是,您不能使用新的向量作为其他gsl函数的替代。它们纯粹是用C语言编写的,你不能传递派生类的指针。
然而,如果你真的需要构建这种向量,你需要查看gsl_vector_alloc和gsl_vector_free的代码来创建构造函数和析构函数。