A-TAK.COM

ユーザー定義型はクラスやフォームに渡せない

※Amazonのアソシエイトとして、A-TAK.COMは適格販売により収入を得ています
※本サイトではその他アフィリエイトも利用しております。

シェア

おそらくCOMの仕様が絡んでくるからだと思うが、クラスやフォームにはユーザー定義型(構造体)は引数で渡せない。
代案としては、
・グローバルのスコープを持たせた構造体を用意し、そこに値をセットして渡す。
・構造体の各値を取得する関数をどこかに用意して、クラス内からはをそれを呼び出す。
 または、構造体を真似たクラスを作って用意しておく。
http://www.int21.co.jp/pcdn/vb/noriolib/vbmag/9812/vb6/

しかし、PublicではなくFriend指定のメソッドにすれば構造体を引数に渡すことが出来ます。
Friendはプロジェクト内からのみ呼び出し可能な特殊なスコープ。
Publicにした場合は他のプロジェクトからも呼び出せる。
クラスをActiveX DLLに出来ることをイメージすると違いがつかみやすいかも。
クラスはDLL化出来るが、そのDLLの公開するインターフェースを定義する場合はPublic、
公開せずにActiveX内でのみ使う場合はFriendに設定するような使い分けをする。
おそらく、Publicで定義型が使えないのは、他のプロジェクトにはそのユーザー定義型が登録されていない可能性があるからだと思われる。
Friendならば、自プロジェクトからしか呼び出されないので、そういうことは考えなくても良くなる。


シェア

投稿日

カテゴリー:

投稿者:

タグ:

カテゴリ一覧