请查看以下结构的定义:
struct rectangle
{
int len,bre;
static int diagonal;
static (int) (*ptr) (int,int);
};
int rectangle::diagonal;
rectangle::ptr; // (WHAT SHOULD COME HERE)
rectangle r1,r2;
朋友们,我在这里定义了一个结构。我们知道'r1'或'r2'的大小只是成员'len'和'bre'的总和。
现在要为静态成员分配内存,我们必须明确地这样做。静态成员对角线的分配很好。 但是我应该在这个地方给出什么:(应该怎么做),以便函数指针的内存分配正常。
希望我的解释清楚。请帮帮我。
答案 0 :(得分:2)
最简单的方法是输入一个函数并在那里使用它:
typedef int (*MyFunction) (int,int);
struct rectangle
{
...
static MyFunction ptr;
};
MyFunction rectangle::ptr = /*initialize it here*/
但你也可以这样做 int(* rectangle :: ptr)(int,int)
答案 1 :(得分:1)
以下是正确的方法:
struct rectangle
{
...
static int (*ptr) (int,int);
// ^^^ no braces needed
};
int (rectangle::*ptr) (int, int);
// ^^^^^^^^^^^^^^ defining a function pointer
每当出现与函数指针相关的混淆时,请创建一个typedef
并使用它:
typedef int (*fptr) (int,int);
struct rectangle
{
static fptr ptr;
};
fptr rectangle::ptr;
答案 2 :(得分:1)
尝试:
struct rectangle
{
int len,bre;
static int diagonal;
static int (*ptr) (int,int);
};
int rectangle::diagonal;
int (*rectangle::ptr)(int,int) = NULL;
rectangle r1,r2