코드를 갖고 있기 때문에 가능하지 않습니다. 애플리케이션에서 사용하는 IDL 유형과 동일한 IDL 유형을 지정하고 CORBA IDL에 정의 된 유형과 애플리케이션에 정의 된 유형 간의 (sigh, yes) 변환 기능을 제공해야한다. 장점으로는 내부적으로 자신의 유형을 사용하는 것처럼 통신 (또는 RPC) 기술의 향후 변경 사항에 대해 응용 프로그램을 숨길 수 있습니다. 이 경우, 문서에서 찾고 QWSPointerCalibrationData
유형은 두 개의 데이터 멤버가 있습니다
QPoint devPoints[5]
QPoint screenPoints[5]
그럼 먼저 QPoint
유형 및 IDL로 선언해야합니다을 다음 QWSPointerCalibrationData
(나는 CORBA 유형을 나타 내기 위해 C_
로 이름을 앞에 추가) :
다음
// IDL
struct C_Point { long x; long y; };
typedef sequence<C_Point> Points;
struct C_WSPointerCalibrationData
{
Points devPoints;
Points screenPoints;
};
, 서버 방법이어야한다 :
CORBA::Boolean Calibrate(C_QWSPointerCalibrationData const& data)
{
QWSPointerCalibrationData qpcd = convert_from_CORBA_QWSPointerCalibrationData(data);
// use qpcd as usual here
}
및 사용자는 직접 convert_from_CORBA_QWSPointerCalibrationData
함수를 작성해야하며 해당 유형을 CORBA 카운터로 변환하는 해당 함수를 작성해야합니다. 전환을 수행하는 데 사용할 수있는 도구가 있지만 그래야만합니다.
안녕하세요 디에고, 모든 정보 주셔서 감사합니다 ... 나는 그것을 시도해 보겠습니다! :) – Owen
IDL에서 어떻게 Calibrate() 함수를 선언합니까? boolean Calibrate (C_QWSPointerCalibrationData const 및 data에서)로 선언하면 연산 매개 변수에 구문 오류가 발생합니다. – Owen
IDL은 C++이 아니므로 "const &"가 없습니다. 그것을 제거하려고하면 작동합니다. –