ab.com コミュニティ

ActiveBasicを通したコミュニケーション
現在時刻 - 2024年3月28日(木) 19:02

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




新しいトピックを投稿する  トピックへ返信する  [ 2 件の記事 ] 
作成者 メッセージ
 記事の件名: クラスのバグ
投稿記事Posted: 2007年1月25日(木) 22:47 
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日(木) 23:26 
オフライン

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

http://www.activebasic.com/forum/viewtopic.php?t=1746
他にも方法があるかもしれませんが、私が思いついた方法はこんなものです。


通報する
ページトップ
期間内表示:  ソート  
新しいトピックを投稿する  トピックへ返信する  [ 2 件の記事 ] 

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


オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[17人]


トピック投稿:  可
返信投稿:  可
記事編集: 不可
記事削除: 不可
ファイル添付: 不可

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