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 件のコメント:
コメントを投稿