C++指向全局函数的类成员指针
C++ class member pointer to global function
>我想要一个类,它的成员有一个指向函数的指针
下面是函数指针:
typedef double (*Function)(double);
下面是一个符合函数指针定义的函数:
double f1(double x)
{
return 0;
}
下面是类定义:
class IntegrFunction
{
public:
Function* function;
};
在主函数的某个地方,我想做这样的事情:
IntegrFunction func1;
func1.function = f1;
但是,此代码不起作用。
是否可以将指向全局函数的函数指针分配给类成员,如上所述?还是必须更改函数指针定义中的某些内容?
谢谢
替换这个:
class IntegrFunction
{
public:
Function* function;
};
有了这个:
class IntegrFunction
{
public:
Function function;
};
您的 typedef 已经创建了一个指向函数的指针。声明Function* function
会创建一个指向函数的指针。
只需替换
Function* function;
自
Function function;
你声明变量为 Function* function
,但 typedef Function
已经是指针的 typedef。因此,函数指针的类型仅为Function
(不带 *)。
替换
typedef double (*Function)(double);
由
typedef double Function(double);
以类型定义函数类型。然后,您可以在使用它时编写*
。
您需要
使用 address-of 运算符来获取标准 C++03 中的函数指针。
func1.function = &f1;
相关文章:
- 从成员指针到整个结构/类的强制转换
- OOP 中的单成员指针
- 使用结构成员指针在C++中填充结构
- 聚合初始化,将成员指针设置为同一结构成员
- 空指针常量 (nullptr)、空指针值和空成员指针值之间有什么区别?
- 共享 C++ 的数据成员指针
- 如何声明指向成员内容的成员指针m_pmd/m_pmf并访问它们?
- 从类C++外部调用指向成员方法的成员指针
- 结构成员指针是否自动初始化为零?
- 如何删除类内类类型的类成员指针
- 是否打印指向已定义 int 的成员指针
- 指向常量的成员指针
- 通过此指针访问时的成员差异和自身的成员指针(简单的 QT 示例问题)
- 类数据成员指针的非类型模板参数包无法使用 gcc 编译
- 为什么我不能在同一行中定义两个相同类型的类的成员指针
- 将类成员指针传递给 Lambda 捕获列表 c++11
- 在单一实例类中将成员指针设置为 null 的正确方法是什么
- 无法删除在destructor中的成员指针的课程
- 删除对象而不调用成员指针的析构函数
- 当派生类的基类具有成员指针时,对其进行深层复制