gpt4 book ai didi

c++ - 如何将函数指针中的函数保存为类的成员函数?

转载 作者:行者123 更新时间:2023-11-30 03:00:52 25 4
gpt4 key购买 nike

基本上,我有一个运行某种算法的模板化类,该算法需要一个 similarity(T t1, T t2) 函数,该函数返回一个定义两个类型 T 对象的相似程度的 double 值。这个相似度函数根据T被定义成什么而变化很大,所以这个类的调用者需要定义相似度函数。我假设函数指针是有序的,但是如何将函数指针中的函数保存为成员函数以供算法使用?

也就是说,我想在类的构造函数中传递 similarity(T t1, T t2) 并能够在整个类中将其作为成员函数调用。我怎么做?谢谢

最佳答案

您不能在运行时向类添加成员函数。

您可以编写一个成员函数,通过函数指针调用提供的函数:

class MyClass {
typedef double (*similarity_fn_type)(T t1, T t2);
similarity_fn_type similarity_fn;
public:
MyClass(similarity_fn_type ptr) : similarity_fn(ptr) {}
double similarity(T t1, T t2) {
return similarity_fn(t1, t2);
}
};

或者,您可以similarity_fn 成员公开。调用它的语法会使它看起来像一个成员函数,但您可能认为它不是很好的封装。

关于c++ - 如何将函数指针中的函数保存为类的成员函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11634093/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com