簡體   English   中英

如何減少定義指針函數的函數數量

[英]how to reduce the amount of functions that defines pointer function

我在我的代碼中實現了一些指針函數/回調,如下所示:

typedef WndDyn* (Edit_t)(Point2d* pThis, const EditParams& EditParams);
Edit_t g_Edit_CB{ nullptr };
typedef WndDyn* (*Show_t)(const Point2d* pThis, const EditParams& EditParams);
Show_t g_Show_CB{ nullptr };
// Punkt3d
typedef WndDyn* (*Edit3d_t)(Point3d* pThis, const EditParams& EditParams);
Edit3d_t g_Edit3d_CB{ nullptr };
typedef WndDyn* (*Show3d_t)(const Point3d* pThis, const EditParams& EditParams);
Show3d_t g_Show3d_CB{ nullptr };
.
.
// Vector2d
.
.

片刻之后,我意識到我正在重復指針功能,我只是在更改我的元素,即 Point_2d/Point_3d/...。有人可以幫我減少這些功能。 我正在考慮實現虛擬純函數,但我通常用函數而不是指針函數來實現它們,所以我不知道該怎么做。 如果有人可以幫助我,我將不勝感激。 先感謝您

由於 C++11(我假設您在使用nullptr時可用),您可以使用別名模板

template <typename T>
using EditParamsCallback_t = WndDyn* (*)(T, const EditParams&);

int main() {
    using Edit_t = EditParamsCallback_t<Point2d*>;
    Edit_t g_Edit_CB{nullptr};

    using Show_t = EditParamsCallback_t<const Point2d*>;
    Show_t g_Show_CB{nullptr};

    // Punkt3d
    using Edit3d_t = EditParamsCallback_t<Point3d*>;
    Edit3d_t g_Edit3d_CB{nullptr};

    using Show3d_t = EditParamsCallback_t<const Point3d*>;
    Show3d_t g_Show3d_CB{nullptr};

    // Vector2d

}

暫無
暫無

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

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