通过函数指针将成员函数作为另一个类的成员函数的参数传递

时间:2018-11-16 18:45:37

标签: c++

我需要传递在类(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&)}

我知道自由函数和成员函数是两个不同的对象,因此需要两个不同的指针。但是,我想知道两个指针之间是否存在强制转换(因为签名在形式上是等效的)。

谢谢

剖腹产

0 个答案:

没有答案