인프런 커뮤니티 질문&답변

정승우님의 프로필 이미지
정승우

작성한 질문수

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문

lambda강의를 듣고 코딩문제에서 구현해봤는데 잘 안되네요 ㅠㅠ

작성

·

235

0

struct isSpecial
{
	bool operator()(char c)
	{
		return !((c >= 48 && c <= 57) || (c >= 97 && c <= 122) || c == '-' || c == '_' || c == '.');
	}
};

// auto isSpecial = [](char c) {return ((c >= 48 && c <= 57)|| (c >= 97 && c <= 122) || c == '-' || c == '_' || c == '.'); };
new_id.erase(remove_if(new_id.begin(), new_id.end(), isSpecial()), new_id.end());

new_id는 string입니다..

struct isSpecial로 remove_if에 전달하면 실행되는데

아래 lambda문법으로 isSpecial을 전달하면

"E1767 지정된 인수 목록으로 함수 "lambda []bool (char c)->bool"을(를) 호출할 수 없습니다."

라며 오류가 발생합니다 ㅠㅠ 왜이러는건가요

 

 

 

 

답변 1

1

Rookiss님의 프로필 이미지
Rookiss
지식공유자

functor는 객체니까 isSpecial()을 했지만
lambda 식을 = 해서 받아온 것은 사실상 함수 포인터처럼 사용하면 됩니다.

정승우님의 프로필 이미지
정승우
질문자

감사합니다 ㅠㅠ

정승우님의 프로필 이미지
정승우

작성한 질문수

질문하기