-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
미해결
함수 포인터 질문
24.01.23 20:28 작성 조회수 98
1
std::function<bool(const int&)> fcnptr = isEven;
cout << fcnptr << endl;
이 방식의 초기화에서는 오류가 뜨고
bool(*fcnptr)(const int&) = isEven;
cout << fcnptr << endl;
이 초기화에서는 오류가 안 뜨는 이유가 궁금합니다. 뜨는 에러 :
E0349 no operator matches these operands
답변을 작성해보세요.
1
Soobak
2024.01.23
안녕하세요, 질문&답변 도우미 Soobak 입니다.
std::function
객체를 직접 출력하려고 시도하였기 때문입니다.
std::function
에는 operator <<
가 정의되어 있지 않습니다.
따라서, cout << fcnptr << endl;
이 부분에서 컴파일 오류가 발생합니다.
즉, std::function
객체 자체를 직접 출력하는 것은 허용되지 않습니다.
반면, bool (*fcnptr)(const int&) = isEven;
에서 fcnptr
은 함수 포인터 이며, 함수 포인터는 기본적으로 메모리 주소를 가리킵니다. C++ 표준 라이브러리는 포인터의 주소를 출력하는 operator <<
을 지원하기 때문에, fcnptr
이 가리키는 함수의 메모리 주소를 정상적으로 출력할 수 있는 것입니다.
답변 1