私はあります。
○ローカル関数
どうして定義できないのでしょうね。あったら何かと便利なんですけどね。私はこれを使いたい時、構造体と operator() を利用して擬似ローカル関数を作ってそれを使っています。
○後置参照
後置参照と言うのかどうかわかりませんが、多くの言語の場合、どんな順番で定義を書いても大丈夫ですよね。C++では常に順番に気を付けないといけないので、面倒でしかたがありません。これができればインクルード関係もすっきりすると思うんですよ。
○↓これが可能 無性にこの機能がほしい時があります。ありませんか?ありますよね?ですよね?(←w
他の書き方をすれば同じ結果を得ることはできますが、すっきりしないんですよ。見た目が。
こんなことでいちいち関数化するなんて耐えられませんし。
現在は下のように書く事で擬似的に実現させています。
int damy = 0;
switch(damy){
case 0:
if(~) break;
}
○ポインタ、参照、コネクション?
ポインタと参照を融合させたものとして、「コネクション」というものを考えました。とは言っても、Javaで言うところの普通の参照です^^;
コネクションを宣言する際は、型名の後に $ をつけます。($にした理由は特にありません。適当です)
ポインタの場合は * を、参照の場合は & を型名の後につけますよね。あれと同じです。
初期化の際に型が同じ変数を指定すると、それがコネクト先として設定されます。
あとは、普通の変数のように使用するだけです。
コネクションへの変更はコネクト先に反映されます。
つまり、コネクションを、コネクト先の変数そのものとして考えることができます。
ここまではC++で言うところの普通の参照と同じですね。
コネクションの特性は、途中でコネクト先をかえることができるところにあります。
コネクト先を変えたい場合は $= 演算子を使用します。
以下サンプルコードです。
int itirou = 0;
int $ con1;
con1 $= itirou; //コネクト先をitirouに設定
int jirou = 1;
int $ con2 = jirou; //宣言と同時にコネクト先をjirouに設定
int $ con3 = con1; //宣言と同時にコネクト先をitirou(con1のコネクト先)に設定
con1 = con2; //itirouにjirouを代入
//itirou==1, jirou==1
con2 $= con3; //con2のコネクト先をitirou(con3のコネクト先)に変更
con2 = 0;
//itirou==0, jirou==1
/*
●コネクト先●
con1 → itirou
con2 → itirou
con3 → itirou
*/
ポインタを使うといちいち *変数名 と書かないといけないので面倒なんですよ。
○関数の戻り値操作
関数を作るとき、「値を返すと膨大なコピーが発生するから、参照引数で受け取ってそれを直接操作するようにしよう。あ~でも結果を返すっていうイメージを壊したくないんだよな~」って思ったことはありませんか?
私はあります。しょっちゅうあります。
そこで考えました。
//~関数定義方法~(例)
std::vector target Function(){
for(int i=0;i<100;++i) target.push_back("\(^o^)/");
return; //戻値は省略可能
}
という構文です。
特にこの機能を使う必要がない場合は戻値受取変数名を省略できます。
関数の中で戻値を操作できる所がポイントです。
ついでに戻値を書くのを省略できても便利だなと思いました。
なお戻値が初期化されていなかった場合は先にデフォルトコンストラクタで初期化します。
const int satou = Function();
//satouが初期化されてから関数が実行される。constがついていたら一時的にconstが外される
以上です。
ここまで読んでくださってありがとうございました。