C++函数名称作为参数

 1 #ifndef CHANPROJECT_VECTOR2D_H
 2 #define CHANPROJECT_VECTOR2D_H
 3 #include "ChanGlobal.h"
 4 
 5 namespace Common{
 6     template <typename T>
 7     class Vector2D{
 8     public:
 9         Vector2D() = default;
10         virtual ~Vector2D() = default;
11         /**
12          * @brief 构造函数
13          * @param x x的值
14          * @param y y的值
15          * @since 1.0.0
16          */
17         Vector2D(const T& x, const T& y){
18             this->m_X = x;
19             this->m_Y = y;
20         }
21         /**
22          * @brief 返回点的x值
23          * @return 该点的x值
24          * @since 1.0.0
25          */
26         ChanNodiscard T x() const{
27             return m_X;
28         }
29         /**
30          * @brief 设置点的x值
31          * @param x 要赋值给x的值
32          * @since 1.0.0
33          */
34         void setX(const T& x){
35             m_X = x;
36         }
37         /**
38          * @brief 返回点的y值
39          * @return 该点的y值
40          * @since 1.0.0
41          */
42         ChanNodiscard T y() const{
43             return m_Y;
44         }
45         /**
46          * @brief 设置点的x值
47          * @param y 要赋值给y的值
48          * @since 1.0.0
49          */
50         void setY(const T& y){
51             m_Y = y;
52         }
53         /**
54          * @brief 比较两个对象是否相等
55          * @param p 要比较的对象
56          * @param sameWith 比较函数
57          * @note 如果比较函数‘sameWith’为nullptr,则使用“==”比较
58          * @return
59          */
60         bool sameWith(Vector2D<T> *p, bool (*sameWith)(T,T)) const{
61             if(sameWith == nullptr){
62                 return (m_X == p->m_X) && (m_Y == p->m_Y);
63             }else if(sameWith(m_X, p->m_X) && sameWith(m_Y, p->m_Y)){
64                 return true;
65             }else{
66                 return false;
67             }
68         };
69 
70         protected:
71         /**
72          * @brief [me]的x值
73          * @since 1.0.0
74          */
75         T m_X = 0.0;
76         /**
77          * @brief [me]的y值
78          * @since 1.0.0
79          */
80         T m_Y = 0.0;
81     };
82 }
83 #endif //CHANPROJECT_VECTOR2D_H

 

posted @ 2022-08-28 11:25  禅元天道  阅读(55)  评论(0编辑  收藏  举报