Как хранить функция для переменной?

Я считаю, что этот билет был закрыт давным-давно, но для получения правильного SQL-запроса, пожалуйста, посмотрите.

SELECT Employee_Name, DATE_OF_BIRTH
FROM Hr_table 
WHERE 

/**
fetching the original birth_date and replacing the birth year to the current but have to  deduct 7 days to adjust jan 1-7 birthdate.
**/

datediff(d,getdate(),DATEADD(year,datediff(year,DATEADD(d,-7,hr.DATE_OF_BIRTH),getdate()),hr.date_of_birth)) between 0 and 7

-- current date looks ahead to 7 days for upcoming modified year birth date.

order by

-- sort by no of days before the birthday
datediff(d,getdate(),DATEADD(year,datediff(year,DATEADD(d,-7,hr.DATE_OF_BIRTH),getdate()),hr.date_of_birth))
15
задан Rakete1111 31 May 2017 в 15:43
поделиться

2 ответа

unsigned int (* myFuncPointer)(unsigned int) = &func_1;

Тем не менее, синтаксис для указателей на функции ужасен, поэтому обычно typedef им:

typedef unsigned int (* myFuncPointerType)(unsigned int);
myFuncPointerType fp = &func_1;
1
ответ дан 1 December 2019 в 01:30
поделиться

В C ++ 11 вы можете использовать std::function для хранения функций. Чтобы сохранить функцию, используйте ее следующим образом:

std :: function < тип возвращаемого значения ( тип (ы) параметров )>

в качестве примера вот оно:

#include <functional>
#include <iostream>

int fact (int a) {
    return a > 1 ? fact (a - 1) * n : 1;
}

int pow (int b, int p) {
    return p > 1 ? pow (b, p - 1) * b : b;
}

int main (void) {
    std::function<int(int)> factorial = fact;
    std::function<int(int, int)> power = pow;

    // usage
    factorial (5);
    power (2, 5);
}
3
ответ дан 1 December 2019 в 01:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: