gpt4 book ai didi

c++ - 如何减少定义指针函数的函数数量

转载 作者:行者123 更新时间:2023-12-02 15:51:32 26 4
gpt4 key购买 nike

我在我的代码中实现了一些指针函数/回调,如下所示:

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 时可用),您可以使用 alias template :

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

}

关于c++ - 如何减少定义指针函数的函数数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72445864/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com