構造体を引数にしたときのエラー

解決


VB3000  2004-05-12 06:18:22  No: 113177  IP: [192.*.*.*]

環境はVB.Net  2003  です。

標準モジュール内でPublic宣言した構造体(BBB)があります。その構造体を、あるクラス(DDD)の中のプロシージャ(EEE)の引数の型として指定すると、型(BBB)の部分が波線になり、

『'FFF'は、Public Class 'DDD'の外にある Friend型を公開できません。』

と表示されます。どういうことなのでしょうか?

以下コードです。
---標準モジュール---
Module AAA

 Public Structure BBB
  Dim CCC as string
 End Structure

End Module

--- あるクラス ---
Public Class DDD
  
  〜省略〜

 Public sub EEE(ByVal FFF as BBB)
     〜
 End sub

end Class

編集    削除
魔界の仮面弁士  2004-05-12 06:37:04  No: 113178  IP: [192.*.*.*]

『Module AAA』という記述は、スコープ付きで記述すると、
『Friend Module AAA』という意味を持ちます。

Friendスコープになっているオブジェクト(BBB構造体)を、
より広いスコープのメソッド(DDDクラスのEEEメソッド)で
公開しようとしたため、エラーになっているのでしょう。

エラーを消すために、メソッド側のスコープを狭くするか、
もしくはモジュール側のスコープを広げるかしてみてください。

編集    削除
VB3000  2004-05-13 21:58:56  No: 113179  IP: [192.*.*.*]

『Module AAA』→『Public AAA』
とすることで解決しました。

ありがとうございます。
キーワード?というものをもう少し勉強します。

編集    削除
特攻隊長まるるう  2004-05-13 23:30:13  No: 113180  IP: [192.*.*.*]

>キーワード?というものをもう少し勉強します。
まずは変数の『スコープ』または『(同一)適用範囲』
ですね。
VBに限らずプログラムの入門書の30ページくらいまでには
必ず書いてあることです。MSDN とかにも載ってます。

編集    削除