ページ 11

オーバーロードの解決方法について

Posted: 2007年1月03日(水) 23:27
by OverTaker
現在のActiveBasicは、TypeDefにより再定義された型と、定義元の型とでは、オーバーロードの解決をすることはできません。

コード: 全て選択

TypeDef newType = baseType
fx(a As baseType)
fx(a As newType)
これのオーバーロードを解決できるようにして欲しいと思っています。
もし解決できるようになれば、例えば次のような、Stringクラスに間違えてLong型を指定したときに、アクセス違反にならずに済みます。

コード: 全て選択

Dim s As String
Dim v As Long
s = v 'LPSTRで解決されるので、警告すら出ない。
もしこの仕様にするのであれば、再定義した型がオーバーロードで見つからなかった場合、定義元の型で解決することもしてほしいです。逆に言えば、もし、再定義した型が見つかれば、優先的にそちらでオーバーロードを解決できるようにしてほしいということです。

特に目立ったデメリットが浮かばないので、何か見落としがあったら指摘していただきたいです。

Posted: 2007年1月03日(水) 23:49
by イグトランス
別件になりますが,ポインタ型と整数型相互の暗黙の型変換にも警告を出すようにするべきだと思います。
オプションでエラーにできても良いくらいだと思います。