ユーザ定義型を引数の型として使用するには?

解決


sato  2002-12-14 02:37:22  No: 76608

ユーザ定義型(Type)をクラスモジュールのPublicのFunctionの引数の型として使用するにはどのようにすればよいのでしょうか?

現在以下のようなコードでエラーが出てしまいます。

<標準モジュール内>
Public Type UserPoint
    X As Long
    Y As Long
End Type

<クラスモジュール内>
Public Function test(udtPoint As UserPoint) As Integer
  '省略
  ' ・
  ' ・
End Function

コンパイルをすると
「パブリックオブジェクトモジュールで定義されたパブリックユーザ定義型に
限り、クラスモジュール内のパブリックユーザ定義型の要素として使用すること
ができます。」
というエラーになります。
ユーザ定義型はPublicで宣言しているのですが、なぜエラーなのでしょうか?


魔界の仮面弁士  2002-12-14 07:10:32  No: 76609

ユーザー定義型を引数にするには、それを構造体としてタイプライブラリにて宣言するか、
もしくは、「InstancingプロパティがPrivate以外に設定してあるクラスモジュール」にて
Public宣言しておく必要があります。

例えば、DirectXで利用される構造体などは、タイプライブラリにて宣言されており、
「パブリックオブジェクトモジュールで定義されたパブリックユーザ定義型」に
相当するため、引数として利用する事ができます。

なお、クラスのInstancingプロパティを変更するには、そのプロジェクトを
ActiveXコンポーネントとして作成する必要があります。もし、ActiveX EXE/DLLには
したくない、という事であれば、そもそもプロシージャをPublicで宣言する必要は
無いでしょうから、それをFriendに格下げしてしまえば十分かと思います。


sato  2002-12-21 02:33:42  No: 76610

ありがとうございました。
Friend で宣言することで解決しました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加