Откладывание выполнения функции с помощью указателей на функции

Если вы ориентируетесь на уровень API 8, вы можете использовать глобальное regex Patterns.IP_ADDRESS . Вы можете напрямую включить это регулярное выражение в свой проект, если вы нацеливаете устройство с помощью android & lt; 2.2:

private static final Pattern IP_ADDRESS
    = Pattern.compile(
        "((25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[1-9])\\.(25[0-5]|2[0-4]"
        + "[0-9]|[0-1][0-9]{2}|[1-9][0-9]|[1-9]|0)\\.(25[0-5]|2[0-4][0-9]|[0-1]"
        + "[0-9]{2}|[1-9][0-9]|[1-9]|0)\\.(25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}"
        + "|[1-9][0-9]|[0-9]))");
Matcher matcher = IP_ADDRESS.matcher("127.0.0.1");
if (matcher.matches()) {
    // ip is correct
}

0
задан Brian Batista 18 March 2019 в 19:03
поделиться

1 ответ

Не нужно заново изобретать это, просто используйте std::function и std::bind:

int main(){
  std::function<void()> cmd0 = std::bind(&PrintIntFloat, 5, 6.2f);
  std::function<void()> cmd1 = std::bind(&PrintStringInt, "Hello", 2u);
  cmd1();
  cmd0();
}

Обратите внимание, что я переименовал функции, потому что снятие наборов перегрузки проблематично в C ++. ]

Или вы можете использовать лямбды, в этом случае подъем не требуется (спасибо deW1 за предложение):

std::function<void()> cmd0 = [] { Print(5, 6.2f); };
std::function<void()> cmd1 = [] { Print("Hello", 2u); };
0
ответ дан r3mus n0x 18 March 2019 в 19:03
поделиться
Другие вопросы по тегам:

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