함수에 대한 C++ 포인터
6027 단어 beginnerscpptodayilearned
어쨌든 Google의 암호화 라이브러리 BoringSSL에서 발췌한 내용을 보여드리겠습니다. 함수에 대한 포인터를 사용하는 좋은 예입니다.
여기있어!
#include <iostream>
#include <string>
typedef void (*tool_func_t)();
struct Tool {
const char *name;
tool_func_t func;
};
void info_func() { std::cout << "You selected info" << std::endl; }
void help_func() { std::cout << "You selected help" << std::endl; }
const Tool kTools[] = {
{"info", info_func},
{"help", help_func},
};
tool_func_t find_tool(const std::string &name) {
for (size_t i = 0;; i++) {
const Tool &tool = kTools[i];
if (tool.func == nullptr || name == tool.name) {
return tool.func;
}
}
}
int main(int argc, char **argv) {
if (argc == 1) {
std::cout << "You didn't povide any arguments" << std::endl;
return 1;
}
tool_func_t tool = nullptr;
tool = find_tool(argv[1]);
if (tool == nullptr) {
std::cout << "You can either get info, or ask for help!" << std::endl;
return 2;
}
tool();
return 0;
}
핵심 단계는 함수의 서명을 정의하는
typedef
선언입니다(이 예에서는 인수를 사용하지 않고 void를 반환함). 그 후에는 이 서명이 있는 함수로 작업할 때 유연성이 뛰어납니다.물론 www.learncpp.com 에서 이에 대한 자세한 내용을 읽을 수 있습니다.
Reference
이 문제에 관하여(함수에 대한 C++ 포인터), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/hi_artem/c-pointer-to-function-7d0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)