gpt4 book ai didi

c++ - 如何在不同的类中使用函数指针?

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

在 function.h 文件中,我声明了一个内联函数,例如

inline double foo(int &a)
{

return a*double value
}

在 a.cpp 文件中,我在许多地方包含了 function.h 文件并调用了 foo 函数。a.cpp 文件也有一个类 b 的实例,我想在 b 实例中调用 foo 函数。当我在 b 中调用一个函数时,我想将函数指针传递给 b,这样我就可以在不包括 function.h 文件的情况下调用 b 中的 foo 函数。

b.cpp file
void b_foo(a function pointer to foo function)
{
call foo
}

由于我已将函数声明为内联函数,我不确定传递函数指针是否有效而不是仅在 b.cpp 中包含 function.h 文件。

我想看看有什么不同。

最佳答案

试试这个:

typedef double (*foo_ptr)(int &);

void b_foo(foo_ptr f)
{
if (f != NULL) {
double d = f(5);
}
}

void f() {
b_foo(foo);
}

typedef 可以更轻松地引用指向函数的指针类型。

调用指针时不需要取消引用指针(可以,但没有必要)。作为参数传递时,您也不需要获取函数的地址(同样,您可以根据需要获取)

注意

inline double foo(int &a)  
{
return a*double value
}

无效,因为它有语法错误。尝试:

inline double foo(int &a)  
{
return a*4.5;
}

你也可以声明/使用一个double局部变量而不是一个double literal

注意:你说的是实例中的函数。如果你真的想调用一个成员函数,你需要:

typedef double (*B::foo_ptr)(int &);

其中 B 是声明函数的类。然后这样使用它:

B b;
foo_ptr f = B::foo;
b.*f(5);

关于c++ - 如何在不同的类中使用函数指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10168000/

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