我试图创建一个函数指针。我的代码:
标题文件:
#pragma once
#include <stdio.h>
class my_class
{
private:
int function(int x);
int *(*foo)(int);
public:
my_class();
~my_class();
};
css文件:
#include "my_class.h"
int my_class::function(int x) {
return 1;
}
my_class::my_class() {
foo = &function;
}
my_class::~my_class()
{
}
但是my_class :: my_class()中的行给出了这个错误:
error C2276: '&': illegal operation on bound member function expression
将鼠标光标放在所述行中的=上会显示以下工具提示:
a value of type "int (my_class::*)(int x)" cannot be assigned to an entity of type "int *(*)int"
我怎样才能让它发挥作用?
答案 0 :(得分:-1)
您认为编译器将为您做的是从指向成员函数的指针到指向普通函数的指针的隐式类型转换。但事实并非如此。
通常不使用指向成员函数的指针,因为对象的实例是分配了一定量的内存,因此指向成员函数的指针可能不会精确指向该函数并可能导致错误的结果
您可以通过两种方式解决问题:
this
指针创建指向成员函数的指针。