[英]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.