0

IDL corba の配列とオブジェクトで問題が発生しました これは私のコードです:

    interface ISinhVien
{
    SinhVien[] DocFile(in String filename);
    void GhiFile(in SinhVien[] sv,in String filename);
};

コンパイルするとエラーが発生します:

CORBA_SinhVien>idlj -fall SinhVienIDL.idl
SinhVienIDL.idl (line 3):  SinhVien is an undeclared type.
        SinhVien[] DocFile(in String filename);
         ^
SinhVienIDL.idl (line 3):  Expected `<identifier>'; encountered `['.
        SinhVien[] DocFile(in String filename);
         ^
SinhVienIDL.idl (line 3):  WARNING: Identifier `String' collides with a keyword;
 use an escaped identifier to ensure future compatibility.
        SinhVien[] DocFile(in String filename);
                       ^
SinhVienIDL.idl (line 4):  SinhVien is an undeclared type.
        void GhiFile(in SinhVien[] sv,in String filename);
                         ^
SinhVienIDL.idl (line 4):  Expected `<identifier>'; encountered `['.
        void GhiFile(in SinhVien[] sv,in String filename);
                         ^
SinhVienIDL.idl (line 4):  WARNING: Identifier `String' collides with a keyword;
 use an escaped identifier to ensure future compatibility.
        void GhiFile(in SinhVien[] sv,in String filename);

誰か助けてください!!!!!!!!!!!!!!!!!!!!

4

1 に答える 1

1

CORBA 言語仕様では、最初にtypedefされていない限り、どのような型の配列も返すことができません。

ここでは 2 つのオプションを利用できます - 固定配列またはsequences- 後者はより柔軟で、実装コードによって配列サイズを設定できます。

interface SinhVien {
  boolean someOperation(in long id);
  // more operations
};

typedef sequence<SinhVien> sinhviens;


interface ISinhVien
{
    sinhviens docFile(in string filename);
    void ghiFile(in sinhviens sv, in string filename);
};

余談: Java 構文と IDL 構文を混在させないように注意してください。stringすべて小文字で表示されます。

于 2013-04-23T14:17:58.907 に答える