簡體   English   中英

函數指針成員變量

[英]function pointer member variable

我在 double ( )(double)類型的類中有一個成員變量,但是有一些函數 id 喜歡存儲它們具有第二個默認參數,因此它們是 double ( )(double, double) 所以我無法存儲它在我當前的成員變量中。

我可以將我的成員變量設為 double ( )(double, double) 以便它還可以存儲 ( )(double) 嗎? 有什么不同的方法可以完成我想要的嗎? 或者在使用 2 個參數 vs 1 個參數的情況下,我是否需要 2 個不同的變量?

你需要兩個變量。 調用中的參數數量必須與函數指針變量中的參數數量相匹配,因此不能對不同數量的參數使用相同的變量。

如果一次只需要其中一個,則可以使用聯合來節省結構中的空間。

double somefunc(double);
double otherfunc(double, double);

struct mystruct {
    union {
        double(*onearg)(double);
        double(*twoarg)(double, double);
    } func
    // other members
};

mystruct obj;

obj.func.onearg = somefunc;
double foo = obj.func.onearg(1.2);
obj.func.twoarg = otherfunc;
double bar = obj.func.twoarg(2.5, 11.1);

暫無
暫無

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

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