2017-12-05 17 views
1

내가 발신자 클래스 이름을 얻을 수있어이 클래스에서메소드 변수 호출자 클래스를 관리하는 방법은 무엇입니까? 클래스 표준 클래스 <strong>대화</strong>에서

Object caller; 

(classDeclaration에서)를 객체 선언 존재한다. 예를 들면 : 나는 IF에 잡으면

if (caller.name() == classStr(MyCallerClass)) 
{ 
    // manage-pass variable in caller class 
} 

, 나는 MyCallerClassPARM 방법에 매개 변수를 전달하고 싶다.

어떻게 간단한 매개 변수를 전달할 수 있습니까? 예 :

if (caller.name() == classStr(MyCallerClass)) 
{ 
    // MyCallerClass.myParmMethod(parameter); 
} 

감사합니다. 유형 Object이다

if (caller.name() == classStr(MyCallerClass)) 
    caller.myParmMethod('abc'); 

caller으로 컴파일러가 어떤 메소드 이름, 그것은 duck typing을 사용 허용 :

답변

3

는 그냥 메서드를 호출합니다. 호출자에게 메서드가없는 경우 런타임 오류가 발생합니다.

즉, 이 아니어야합니다. 표준을 변경하면 Dialog 클래스가됩니다. 클래스를 확장 할 수도 있지만, 이것이 옳은 일은 아닙니다.

당신이 무엇을 해야합니까? 당신이 제공하지 않는 정보에 따라 달라집니다.

+0

감사합니다. @Jan B. Kjeldsen. 좋은 충고. – ulisses

1

올바른 & 안전한 방법은 다음과 같습니다

MyCallerClass myCalss; 

    if (caller && classidget(caller) == classnum(MyCallerClass)) 
    { 
     myClass = caller; 
     myClass.myParmMethod('abc'); 
    } 

이 form.init 방법의 예를 참조하십시오.

+0

안녕하세요 @ mazzy 좋은 조언. 감사! – ulisses