2009-06-26 3 views
1

Wikipedia C++ 0x는 익명의 기능을 지원한다고합니다. 부스트 또한 그것을 지원하는 것 같습니다. 그러나 .NET을 사용하고 있기 때문에 스틱을 사용할 수 있다면 멋질 것입니다.C++ .NET에서 익명 함수를 사용할 수 있습니까?

기본적으로 객체에 대한 빠른 코드를 작성하고 싶습니다. 나는 대략 85 - 90 개의 상태를 가질 수있는 로봇을 가지고있다. 대부분의 상태는 "로봇 마이크로 컨트롤러에 전달 된 정수 값"입니다. 그래서 예를 들어 로봇에게 상태 35로 가라고합니다.

그러나 일부 주에서는 사용자 입력과 같은 추가 조작이 필요하므로 간단하게 유지하고 차이점에 대한 몇 줄의 코드 만 작성하고 싶습니다. 파생 클래스 사용을 고려해 봤지만 몇 줄만 수정하면 많은 코드가 필요합니다.

답변

-1

익명 함수 (Lambda Expressions 또는 대리자라고도 함)는 .NET Framework의 일부가 아닌 C#의 언어 기능입니다. 나는 마이크로 소프트가 managed-C++에 익명의 함수를 추가했다고 생각하지 않는다. 나는 comments이 나와 동의하는 것으로 보인다.

그래도 걱정하지 마십시오. 언급했듯이 Boost.Lambda은 사용할 수있는 훌륭한 라이브러리입니다. 좋은 점은 헤더로 완전히 템플릿으로 구현된다는 점입니다. 따라서 헤더 만 포함하면됩니다. 모든 표준을 따르는 C++ 컴파일러가이를 지원해야합니다. 이미 가지고있는 것에 충실하려는 당신의 욕구를 이해하지만 이러한 헤더를 다운로드하고 사용하는 데 필요한 노력은 실제로는 최소화해야합니다.

정말로 Boost를 사용하고 싶지 않다면 C#을 사용해 볼 수 있지만 Boost Lambda 라이브러리를 사용해 보는 것이 좋습니다. 생각보다 쉽습니다.

+0

C++ 표준의 새 버전에도 약간 이상하지만 람다식이 있습니다. –

+0

C++이 이제 람다 식을 얻는다는 것을 알고 있습니다. 그러나 3 달 전에이 질문에 대답했을 때 분명하지 않았습니다 ... 적어도 저에게는 아닙니다. –

0

C++. NET에서 C++/CLI를 의미하는 경우 예. MS가 자신의 C++ 컴파일러에서 C++ 0x 람다 식을 지원하면 해당 지원이 C++/CLI로 확장됩니다. 람다 식 으로 바꾸려면 Boost.Lambda가 필요합니다.

0

C++ 0x 람다 함수는 VC2010의 릴리스와 함께 C++/CLI에서 사용할 수 있습니다. 그러나 이들은 네이티브 C++ 객체이며 C++/CLI 대리자로 사용할 수 없습니다. 또한 .NET 핸들을 전달하려면 gcroot<>을 사용해야합니다.

관련 문제