0

请看下面结构的定义:

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' 的总和。

现在要为静态成员分配内存,我们必须明确地进行。静态成员对角线的分配很好。但是我应该在这个地方给出什么:(这里应该有什么)以便函数指针的内存分配很好。

希望我的解释对你来说很清楚。请帮帮我。

4

3 回答 3

2

最简单的方法是 typedef 一个函数并在那里使用它:

typedef int (*MyFunction) (int,int);
struct rectangle
{
    ...
    static MyFunction ptr;
};
MyFunction rectangle::ptr = /*initialize it here*/

但你也可以这样做 int (*rectangle::ptr)(int,int)

于 2012-10-13T07:58:36.740 回答
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;
于 2012-10-13T07:54:56.247 回答
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
于 2012-10-13T07:56:31.810 回答