• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

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

21.12.22 23:38 작성 조회수 182

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

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

정승우님의 프로필

정승우

질문자

2021.12.23

감사합니다 ㅠㅠ