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

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者
ゲスト

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

#1 投稿記事 by ゲスト »

お世話になります。

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

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

ActiveBasicはv4.24.00を使用しました。
konisi
記事: 893
登録日時: 2005年7月25日(月) 13:27
お住まい: 埼玉県東松山市
連絡する:

#2 投稿記事 by konisi »

どのような状態でオーバーロードが解決出来なくなっているのかがわかりにくいので、少なくとも46行目と、同じ名前で定義してある行について見せてくれませんか?
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。

に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
ゲスト

#3 投稿記事 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" を直接渡すのが駄目なのでしょう?
konisi
記事: 893
登録日時: 2005年7月25日(月) 13:27
お住まい: 埼玉県東松山市
連絡する:

#4 投稿記事 by konisi »

多分、"aaaaa"で渡すとString型ではなくByteptr型(ポインタ)として渡されるので、オーバーロードが解決できない物かと思います。(改善してほしいところですね。)

abc(MakeStr("aaaaa"))
とすればちゃんと行くかと思います。
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。

に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
ゲスト

#5 投稿記事 by ゲスト »

ありがとうございました

abc(MakeStr("aaaaa"))

でうまくいきました
返信する