2010-12-11 6 views
3

일부 C++ 코드를 Delphi로 변환 중이며 일부 추상 클래스는 번역해야합니다. 이러한 클래스는 등의 매개 변수/반환 형식으로 사용하고, 제 질문은 경우 이와 같은 C++ 클래스 계층 구조 :C++ 클래스를 Delphi로 변환

Thing = class 
    procedure blah; virtual; 
end; 

Thing2 = class(Thing) 
    function asdf(Thing) : Boolean; virtual; 
end; 

그리고 델파이 코드 :

class Thing { 
    virtual void blah() = 0; 
}; 

class Thing2 : public Thing { 
    virtual bool asdf(Thing*) = 0; 
}; 

같이 델파이로 쓸 수있다 C++ 함수를 호출하는 C++ 함수를 호출 할 수 있으며 C++ 코드는 Delphi 등을 사용하는 Delphi 함수를 호출 할 수 있습니다. 기본적으로 위의 변환이 이루어지면 C++ Thing2 *는 Delphi Thing2와 동등합니다 그것은 방법, 등?

+2

당신은 루디 Velthuis '기사 "델파이 C++ 객체 사용"을 읽어보십시오 (http://rvelthuis.de/를 articles/articles-cppobjs.html). –

답변

2

아닙니다. C++에서 메서드를 = 0으로 표시하는 것은 추상 메서드임을 의미합니다. 델파이에서 동일한 효과를 얻으려면 virtual; abstract;으로 표시해야하며 virtual;이 아닙니다.

또한 델파이에서 클래스 멤버 선언을 클래스 이름 바로 아래에두면 기본적으로 published으로 선언됩니다. 즉, 공용이므로 RTTI가 생성됩니다. 그건 아마도 당신의 의도하지, 그래서 먼저 가시 범위 선언 (private, protected 또는 public) 넣어 :

Thing = class 
public 
    procedure blah; virtual; abstract; 
end; 

Thing2 = class(Thing) 
public 
    function asdf(Thing) : Boolean; virtual; abstract; 
end; 
+0

그런 다음 abstract after virtual을 추가하면 C++의 Thing2 *가 Delphi의 Thing2와 동일하게됩니까? –

+0

@ 존 : 예, 플러스 내 사소한 차이점에 대한 편집을 참조하십시오. –

+0

완벽, 고마워. –

관련 문제