簡體   English   中英

函數指針作為結構的靜態成員

[英]function pointer as static member of a structure

請查看以下結構的定義:

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

現在要為靜態成員分配內存,我們必須顯式地進行分配。 靜態成員對角線的分配很好。 但是我應該在該位置給出什么:(應該在此處顯示),以便為函數指針分配內存。

希望我的解釋對您清楚。 請幫幫我。

最簡單的方法是對一個函數進行typedef定義並在其中使用它:

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

但是你也可以將它作為int(* rectangle :: ptr)(int,int)

下面是正確的方法:

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;

嘗試:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM