ab.com コミュニティ

ActiveBasicを通したコミュニケーション
現在時刻 - 2024年4月27日(土) 22:55

全ての表示時間は UTC+09:00 です




返信する
ユーザー名:
件名:
メッセージ本文:
メッセージを入力してください。60000 字まで入力できます。 

フォントサイズ:
フォントカラー
オプション:
BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: OFF
BBCode を無効にする
URL を自動的にパースしない
クイズ
お手数ですがカタカナで「エービー」と4文字を入力してください。:
答えを正確に入力してください。答えられるかどうかでスパムボットか否かを判定します。
   

トピックのレビュー - クラスのバグ
作成者 メッセージ
  記事の件名:   引用付きで返信する
引用:
あるメソッドで、同一クラスのある内部メソッドと同名の関数を呼び出そうとしても、
引数にかかわらず、内部メソッドを呼び出そうとしているとコンパイラが認識してしまい、
「パラメータ指定が間違っています」とエラーメッセージが表示されます。
こちらのバグについては、ライブラリ開発のフォーラムで、既に報告済みです。以下、その返信内容の引用です。
引用:
グローバル関数とクラスメソッドのオーバーロードですが、こちらも次回のバージョンアップで対応致します。ただし、構造の都合上、DLL関数をオーバーロードすることはできない制約を付ける形にさせてもらいます(すみません)。こちらも、後々は対応したいと思いますが、ちょっと今やるにはコード改変が多すぎるので、保留にさせてください(テキトーにチケットなげておいもらって良いです)。
引用:
String型の変数にmalloc, calloc関数の戻り値を代入できてしまいます。
Stringクラスですよね?こちらに関しては、それ以外にも、Long型を何の警告も出すことなく、Stringクラスに代入できたりしてしまいます。バグを引き起こす原因の一つになりやすいので、どうにか対処しようと、以下の仕様提案をしているところです。

http://www.activebasic.com/forum/viewtopic.php?t=1746
他にも方法があるかもしれませんが、私が思いついた方法はこんなものです。
投稿記事 Posted: 2007年1月25日(木) 23:26
  記事の件名:  クラスのバグ  引用付きで返信する
Virtual宣言のメソッドをオーバーライドしたメソッドを呼び出す時、
上位クラスのメソッドが呼び出される場合があります。
コード:
#prompt
Class CTest1
Protected
  m_Name As String
  Virtual Sub DoPrintMsg()
  End Sub

Public
  Sub CTest(AName As String)
    m_Name = AName
  End Sub

  Sub PrintMsg()
    DoPrintMsg()
  End Sub
End Class

Class CInheritsTest
  inherits CTest1
Protected
  Override Sub DoPrintMsg()
    Print m_Name
  End Sub
Public
  Sub CInheritsTest(AName As String)
    CTest(AName)
  End Sub

  Sub PrintMsg2()
    Print m_Name
  End Sub
End Class

Dim A As CInheritsTest("hoge")
A.PrintMsg()   '何も起きない
A.PrintMsg2()
あるメソッドで、同一クラスのある内部メソッドと同名の関数を呼び出そうとしても、
引数にかかわらず、内部メソッドを呼び出そうとしているとコンパイラが認識してしまい、
「パラメータ指定が間違っています」とエラーメッセージが表示されます。
コード:
#prompt
Sub AProc(Num As Long)
  Print Str$(Num)
End Sub

Class CTest2
Private
  Sub AProc()
    Print "AProcメソッドの呼び出し"
  End Sub
Public
  Sub BProc()
    AProc(10)
  End Sub
End Class

Dim A As CTest2
A.BProc()
String型の変数にmalloc, calloc関数の戻り値を代入できてしまいます。
#strict宣言してもエラー表示がされないので、修正していただけるとありがたいです。

お手数だとは思いますが修正のほどよろしくお願いいたします。
投稿記事 Posted: 2007年1月25日(木) 22:47

全ての表示時間は UTC+09:00 です


ページ移動:  
Powered by phpBB® Forum Software © phpBB Limited
Japanese translation principally by ocean