我有一个班级:
class X{
public :
void f ( int ) ;
int a ;
} ;
任务是“在代码内部提供声明:
好的,所以指向int a的指针只是int * x =& a,对吧?如果X中没有double,我是否已经在这个类中创建了double的指针?最大的问题是第二项任务。如何声明指向函数的指针?
答案 0 :(得分:3)
这些被称为pointers to members。它们不是常规指针,即不是地址,而是对类的实例进行“排序”偏移(使用虚函数会有点棘手。)所以:
int X::*ptr_to_int_member;
void (X::*ptr_to_member_func)( int );
double X::*ptr_to_double_member;
答案 1 :(得分:1)
您需要将它们声明为指向成员的指针。成员的指针与通常的指针不同,因为它们是结构或类的成员的地址,而不是常规指针的绝对地址。
有关详情,请参阅this。
答案 2 :(得分:0)
在类型名称和变量名称之后,使用'*'声明指向任何类型的指针:
Franks_Class * p_franks_class; // Declares a pointer to an instance of Franks_Class.
该功能的声明更为模糊:
typedef void (*My_Int_Function_Ptr)(int parameter);
声明一个名为My_Int_Function_Ptr的类型(同义词),一个指向函数的指针,该函数采用 int参数并返回void
。
从这本书和好的 C ++书中,您应该能够回答其余的问题。