自己作成クラスにて別のクラスを保持するには?

解決


あると  2004-07-28 20:00:55  No: 115145  IP: [192.*.*.*]

VB6.0にてクラスモジュールを二つ定義し、
片方にもう片方のクラスを持たせるメソッドを持たせたのですが、
それを実行すると
実行時エラー438
このオブジェクトはこのメソッドまたはプロパティをサポートしていません。

となってしまいました。

  Class1, Class2

 Class1にメソッド
  Public Sub setWepon1(ByRef cls2 As Class2)
    
Set 

  End Sub
スペルミスなどではないことは確認したのですが、なぜ、このメッセージが出るのかがわかりません。

  どなたか心当たりがありましたら教えたいただけないでしょうか。

編集 削除
あると  2004-07-28 20:04:43  No: 115146  IP: [192.*.*.*]

すみません  入力中に誤って送信してしまいました

  コードの部分は

    Class1, Class2

 Class1にメソッド
  Public Sub setWepon1(ByRef cls2 As Class2)
    
  Dim class2Data As Class2
  Set class2Data = cls2 

  End Sub

 となります。

  不手際すみません

編集 削除
長谷川  2004-07-28 20:38:33  No: 115147  IP: [192.*.*.*]

もうすこし詳しくお願いできますでしょうか?
掲示のソースだけではエラーは起きません。

setWepon1メソッドを呼び出している部分などをお願いします。

それから、class2を保持するのが目的ならば、setWepon1メソッドの中で変数を宣言しないで、
Class1で宣言されている関数などの外側でPrivateで宣言した方がよいと思います。

編集 削除
あると  2004-07-28 22:54:56  No: 115148  IP: [192.*.*.*]

失礼しました。
呼び出し部分ですが、普通にクラスを宣言して、メソッドを呼んでいます

Dim cls1 As Class1
Dim cls2 As Class2

Set cls1 = New Class1
Set cls2 = getClass2() 'class2を取得するメソッド

cls1.setWepon1(cls2)

  それから、ご指摘Class2宣言ですが、これは関数外で宣言しています。
紛らわしい記述ミスでした。すみません。

編集 削除
長谷川  2004-07-29 08:58:30  No: 115149  IP: [192.*.*.*]

cls1.setWepon1(cls2)

Call cls1.setWepon1(cls2)
にしてみるとどうでしょうか?

編集 削除
ガッ  2004-07-29 17:47:13  No: 115150  IP: [192.*.*.*]

きっと変数か、まぁ名前のスコープの問題だと思う。
が、スコープが分からない。
短いソースでまとめ上げてもらえば可。

編集 削除
あると  2004-08-02 16:18:44  No: 115151  IP: [192.*.*.*]

Call  をつけてみたら無事に認識されました。

だいぶ返信が遅れていまい申し訳ありません
ご助言くださった方々、どうもありがとうございました。

編集 削除