2010-06-19 2 views
1

나는 (하지 코딩 관점, 소프트웨어 디자인의 관점에서) ++ 루아와 클래스의 생성자를 내 C를 등록하는 가장 좋은 방법을 알아 내려고 노력하고있어C++ 클래스에 Lua 바인딩을 만들기위한 올바른 소프트웨어 엔지니어링 접근법은 무엇입니까?

내가 이것을 어떻게 할 것인가?

내 아이디어 :

1) 내가 루아에 사용 가능한하려는 C의 ++ 생성자의 각 결합 "초기화 루아 바인딩"파일의 어떤 종류를 확인? (문제 :이 파일은/디버그 동기화 더 크고 더 크고 더 어려워하는 경향이있다)

2) 각 클래스는 내 "LuaManager"클래스 (문제와 자신의 생성자의 등록 responsable이다 : 그것은 것 종류 스크립트 클래스의 각이 방법을 사용하는 경우에만 일단 루아와 생성자의 결합한다, 그래서 이상적으로, 종류 A의 같은 클래스에 대해 또 다시 루아에 동일한 생성자를 결합하는 바보.)

아이디어 , 또는 의견은 대단히 환영합니다.

답변

1

난 당신이

그러나 나는 둘 사이에 명확한 구분이 확실하지 않다하지 코딩 관점 소프트웨어 디자인의 관점에서

, 을 요청하여 무슨 뜻인지 이해합니다. 또는 더 정확하게 코딩 방법을 사용하면 디자인 옵션이 결정됩니다. 예를 들어, SWIG를 사용하는 경우 별도의 "인터페이스"파일을 작성하기 때문에 질문의 옵션이 실제로 이해가되지 않습니다. luabind를 사용하고 있다면, 옵션을 이해할 수 있습니다. 그러나 luabind 헤더가 컴파일 속도를 크게 늦추므로 가능한 한 적은 수의 컴파일 단위에 포함 시키길 원합니다. 귀하의 "코딩"접근 방식에 luabind 결점이 없다면 2) 더 합리적인 것처럼 보입니다.

0

두 번째 방법이 효과적입니다. 다중 등록을 방지하는 한 가지 방법은 정적 초기화 목록 접근법을 사용하는 것입니다. 각 클래스는 Lua 등록 함수를 정적 std :: set pre-main에 추가합니다. 그렇다면 애플리케이션을 시작할 때이 std :: :: set을 걷고 루아 런타임에 바인딩하는 각 클래스 생성자를 추가한다. 이렇게하면 클래스 바인딩이 한 번만 등록됩니다.

+0

매우 흥미로운 것 같습니다. 자세히 알려 주시겠습니까? 감사합니다. – Goles

관련 문제