흠 제 생각엔 조금 오해신것 같습니다. 제 추측엔 CMyClass 객체를 복수로 사용하실거로 보입니다(싱글톤 인가요 혹
시..).
스크립트에서 지역변수를 선언하면 새로운 객체가 생기게 됩니다. 이벤트가 호출될때마다 CMyClass 지역 객체를
만들고 사용하게 되는거니 Event()를 진행중인 객체가 아닌 스크립트에서 선언한 새 지역 객체의 Test() 멤버함수가
호출되겠지요. 전역 테이블에 현제 참조해야할 객체를 넣는 방법을 사용하신듯 하군요(전역으로 바인딩하는것도 좋은방법입니다.)
일단 아래는 질문하신분의 스크립트입니다.
// test.nut 파일
> // test.nut 파일입니다.
> function ClassTest()
> {
> local myClass = CMyClass;
> myClass.Test();
>
> }
이 스크립트의 오류는 스크립트를 컴파일해서 매번 실행한다고 해서 ClassTest()가 실행되진 않습니다. 단지
ClassTest()를 선언
할뿐이지요(다른 언어와 크게 다르지 않습니다). 아마 ClassTest(); 부분을 질문에 첨부하지 않으신것 같습니다. 따로
ClassTest(); 문자열 버퍼를
컴파일해서 호출하느게 좋을듯합니다.
음 이게 도움이 될지 모르겠지만 질문하신분은 레퍼런스를 이용하면 될듯합니다.
// new test.nut
function ClassTest(Target)
{
Target.Test();
}
// C/C++ 소스
CMyClass::Event()
{
SquirrelFunction<void>(_T("ClassTest"))(this);
}