ツイート人気の投稿とページ10進数の整数をN進数へ変化し文字列にする:C++コード[重複]組み合わせ(nCr,nHr):C++コード組み合わせを一つずつ表示する。間が開いてしまいましたが、前回は静的クラスなどの作り方などについてでしたね。今回は動的クラスについて始めます。サンプルとしてスクリプト用の2Dベクトルクラスを例として説明していきます。SQVector2.StaticTest(v2_03,"Test05");いきなりソースを一度に書きましたが、気にせず行きましょう。SqPlusの初期化関係を飛ばし、早速SQVector2について説明していきます。sq_vector.hにの18行目にあるSG_VECTOR2は、2Dベクトルを便利に扱える構造体です。詳しくはSG_VECTOR2を参照してみてください。そのベクトルクラスを派生したのが、今回のSQVector2構造体となります。size);これは、スクリプト側で作成&削除時に呼ぶために必要です。56行目にあるマクロを必ず書きます。括弧の中は、対象とするクラス名を書きます。DECLARE_INSTANCE_TYPE(クラス名)これで下準備はとりあえずおしまいです。sq_vector.cppの説明に入ります。constructor関数名前通りスクリプト側から呼ばれるコンストラクタですが、no01.nutで言うところの1,7,14行目の所で呼ばれています。30行目のrelease関数は、名前の通りSQVector2を解放するときに呼び出される静的メンバ関数であり、constructor関数内で書きます。解放するための静的メンバ関数);これを書けばrelease関数が登録され終わりです。constructor関数ですが、引数ももちろん扱えます。17行目に引数の数を取得し、18,22行目で引数の数によって処理が違いますね。※このとき17行目から取得する引数の数は、1つ多くなる事に注意!28行目は、それ以外の引数の場合はエラーを出すようにしています。22行目は、数値以外の引数だったらエラーを出すように追加したほうが良いかもしれませんね。やり方は前回のGetTypeを使えばすぐにできます。release関数の中身を見てみると。release関数の説明みたいに感じ取るのは難しいから・・・まずは60行目のSQClassDefクラスSQClassDef<対象とするクラス>まずは、これを書く!これでSqPlus側に自動的に登録されるので簡単ですよね。次に、61行目にスクリプト側で使うクラス名を書きます。_T(“SQVector2′′)さて、その後で重要なのが、コンストラクタの登録です。67行目を見てもらうとあります。_T(“*”)).これを書かないと、スクリプト側からコンストラクタが呼ばれません。_T("constructor"),も重要なので必ず書いてください。ん!?staticFuncVarArgsこれは?64行目にも同じものがあるが・・・こいつは、関数名を直訳すればそのままなのだけども、説明しますw静的メンバ関数の引数が扱えるバージョンです。引数がいらないやつでstaticFuncがあるけども、これから説明するfuncと同じ書き方なので、まぁ、書かなくてもいいかな。・3つめの引数が引数の種類:*(アスタリスク)で型と引数の数が無制限となっています。型は前回のList2を参照してください。説明の順番がちょとおかしいが、次はメンバ変数の登録65,66行目var(&SG_VECTOR2::x,_T(“x”))var(&SG_VECTOR2::y,_T(“y”)).これは、staticFuncVarArgsの説明で直感的にわかるかな、でも一応説明します。・1つめの引数が変数のポインタ、ちなみにSQVector2::xという書き方でもOK・2つめの引数がスクリプト内でのメンバ変数名お~ぃ、ここまで付いてきてこれているか?と軽く言ってみるテストよし、大半が付いてきてきてるみたいだから、話を続けよう。変数つながりで、62行目をみてみるとconstant(3.1415923f,_T("TEST"))とある、これは定数を登録するときに使う。何かというと、メタメソッドです。今回使用したのは3種類だけで、まだ下記のリストのようにまだあります。エミュレートするために呼び出されるno01.nutの14行目の所では、_addが呼ばれます。この辺も色々実験してみてください。これはなに?なんでこんなの宣言してるの?」なんて思っている人は一人もいないと思うので、先に進みたいと思いますwわからない人は、ためしにその部分を削除してコンパイルしてください。そのエラーからググって自己解決してください。・3つめの引数が引数の種類:*(アスタリスク)で型と引数の数が無制限となっています。型は前回のList2を参照してください。staticFuncVarArgsとほぼ同じ感じだよね。これで、簡単ながら一通りの説明終わり!おっと!忘れてた忘れてた^^;64行目のやつだよ・・・型のやつで"x"とあるが、これはいったい何だ?と疑問に思う人はほとんどいないと思うけど、念のために説明こいつは、インスタンスで、早い話スクリプト内で登録されているクラスなどを現します。45行目SQVector2::StaticTestでスクリプト内でのSQVector2を参照してますね。参照方法が、49~51行目です。sa.GetObjectHandle(2);まず、これでスクリプト内のSQVector2を取得。obj.Get<SQVector2*>();こうすることによって、参照することができるようになる。pV2;とかしちゃだめだぞ!まだ、言い忘れていたことがあったよ。使う場合、前回と同じで、+1してからにしてください。!さて、今回もスパルタだったかなw今回の動的クラスは、まだ応用が沢山あるが今日はここまでということで!予定では次回も動的クラスです。コメントデータの処理方法の詳細はこちらをご覧ください。vs2013kaoken。