ページ 11

関数のオーバーロードについて

Posted: 2006年6月20日(火) 09:04
by ゲスト
お世話になります。

バージョンアップ履歴を見ていたら
v4.20.00 で ・関数及びメソッドのオーバーロードに対応。
v4.21.00 で ・コンストラクタのオーバーロードに対応。
とありましたが、どの程度の対応なのでしょうか?

MainWnd.sbp(46) - "abc" オーバーロードを解決できません
とエラーが出てしまうのですが...

ActiveBasicはv4.24.00を使用しました。

Posted: 2006年6月20日(火) 21:48
by konisi
どのような状態でオーバーロードが解決出来なくなっているのかがわかりにくいので、少なくとも46行目と、同じ名前で定義してある行について見せてくれませんか?

Posted: 2006年6月20日(火) 22:33
by ゲスト
申し訳ありません
エラーだけではわかりませんよね
以下のスクリプトが該当すると思われる関数です

Function abc() As Long
:
:
End Function

Function abc(a As String) As Long
:
:
End Function

abc() はOKですが
abc("aaaaa") が駄目でした

さっき試してたら

Dim buf As String

buf="aaaaa"
abc(buf)

ではOKになりました

なぜ "aaaaa" を直接渡すのが駄目なのでしょう?

Posted: 2006年6月20日(火) 22:43
by konisi
多分、"aaaaa"で渡すとString型ではなくByteptr型(ポインタ)として渡されるので、オーバーロードが解決できない物かと思います。(改善してほしいところですね。)

abc(MakeStr("aaaaa"))
とすればちゃんと行くかと思います。

Posted: 2006年6月20日(火) 23:02
by ゲスト
ありがとうございました

abc(MakeStr("aaaaa"))

でうまくいきました