ページ

2014年3月26日水曜日

ActiveBasic to C++:ActiveBasicのクラスについて考える

ActiveBasicでもクラスを使うことが出来ますが、自分はそれはC++を学ぶ上で邪魔になると思い、わざとパスしてC++の世界に飛びこんだわけですが Visual C++ をインストールした場所が外付けハードディスクで、しかも共用なのであっち行ったりこっち行ったりとなかなか使えず、Linux でやるにも Windows アプリケーションを作るのが非常に困難で(主にDXライブラリを使ったゲーム)、そして何と言っても少し疲れたので、ActiveBasicのクラスでもやってみようかなということでこの記事です。

C++:
//あいさつを登録して、あいさつと、あいさつした回数を表示する
#include <string>
#include <iostream>
using namespace std ;

class greeter {
string greetingword ;
int count ;
public:
greeter( string in ) {
count = 0 ;
greetingword = in ;
}

void greet() {
count ++ ;
cout << string << endl ;
cout << "これは" << count << "回目のあいさつです。" << endl ;
}
};

int main() {
string a ;
greeter* p ;
p = new greeter( "Hello!!" ) ;
while (1) {
cout << "何か入力してEnterを押してください [q]で終わる" << endl ;
cin >> a ;
if (a=="q") break ;
p -> greet() ;
}
delete p ;
return 0 ;
}

ActiveBasic:
#console

class greeter
    private
    greetingword As String
    count As Integer
   
    public
        sub greeter()
            count = 0
            greetingword = ""
        end sub
       
        function addgreeting( in As String )
            greetingword = in
        end function

        sub greet()
            count ++
            print greetingword
            print "これは" & Str$(count) & "回目のあいさつです。"
        end sub
end class

function main() As Integer
    dim a As String
    dim p As *greeter
    p = new greeter()
    p -> addgreeting( "hello!" )
   
    do
        print "何か入力してEnterを押してください。[q]で終了"
        input a
        if a="q" then exit do
       
        p -> greet()
    loop
   
    delete p
    main = 0
end function

dim result As Integer

result = main()

end

なぜかActiveBasicのほうがコーディングに時間がかかった。コンストラクタの中であいさつの文を代入すると結果がおかしくなったので別の関数に移して解決しました。
感想:
もともとの仕様としてクラスが備わっているC++には勝てないね

今回はここまで 

追記) ActiveBasic の方のサンプルプログラムで、クラス定義のときに "private" と書くところを"private:" と書いていましたので修正しました。

0 件のコメント:

コメントを投稿