我需要传递在类(C1)中定义的函数作为在另一个类(C2)中定义的函数的输入参数。 在C2中,我定义了:
std::vector<double> aniso_local_stiffness(const Element & GeoEle, const Element & VarEle,
const GaussIntegrator & quadRule, difftensor_type condtens );
在difftensor_type
(在C2之外定义)期间
typedef const std::vector<double> (*difftensor_type)(const Element & , const std::vector<double> & );
在C1中,我具有以下功能:
const std::vector<double> conductivityTensor(const Element & geoEle,
const std::vector<double> & xi ) const;
该功能是非静态的 如何将ConductivityTesnor作为aniso_local_stiffness的参数传递?我尝试过:
std::vector<double> locstiff=locmat.aniso_local_stiffness(Ele, Ele,
Ele.QuadRule(0), _data->conductivityTensor );
(_ data是指向C1对象的指针),但这会产生错误:
错误:调用“ LocalMatrices :: aniso_local_stiffness(const Element&,const Element&,const GaussIntegrator&,)”没有匹配函数 std :: vector locstiff = locmat.aniso_local_stiffness(Ele,Ele,Ele.QuadRule(0),_data-> conductivityTensor); 注意:参数4的已知转换没有从“”到“ LocalMatrices :: difftensor_type {aka const std :: vector(*)(const Element&,const std :: vector&)}
我知道自由函数和成员函数是两个不同的对象,因此需要两个不同的指针。但是,我想知道两个指针之间是否存在强制转换(因为签名在形式上是等效的)。
谢谢
剖腹产