2008-11-01から1ヶ月間の記事一覧

[C#][C++] やっぱり道草

ガベッジコレクタが組み込みで付いていて、ポインタと言うものをあんまり意識させない言語を使ってるとまず引っかかる罠にはまったので自戒を込めて orz C#とC++で以下のようにクラスを定義したとして、、、 C# public class Hoge { public int Value { get; set…

で、そとのまとめ(その1)

3種類の表現方法があれば、戻り値も色々とかけるのは道理なワケで、上のように書き方が1種類に定まらない上に、戻りの型によって戻ってきたオブジェクトの意味も違って来るのが問題になる。以下にざくりとまとめてみる。*1このまとめに使うサンプルコード #includ…

文字コード

実際問題、えらい勢いでコイツに悩まされてる orz SQLite自体は、ADO.Net準拠のSystem.Data.SQLiteを利用してるので、わりかし簡単にC#から使うことが出来る。 ただ、SQLite自体、エンコーディングとして、UTF-8とUTF-16*1が利用可能なのだけど、基本的に入力した際…

だいぶ道草を食ったので

やりたいことをぼちぼち。C#メインでやっているおいらが、C++いじくるハメになったのは、SQLiteという、組み込み型のデータベースで全文検索*1をさせたかったからなわけで。ただし、この全文検索のTokenizeは英語圏というか、スペース区切りで文字がやってきたとき…

それじゃ、少しまとめてみますか

ということで、まとまるはずもないけど、無理矢理まとめてみる。 (もしかしたら、C#に対してひいき目で見てるかもしれない)C#について classキーワードや、structキーワードによって、その型の"作成者"が該当する型をどこに配置するのかを決めることが"できる"。 他…

じゃあ、C++のclassって、C#で言うと何なのさ?

多分、以下はほぼ無意味。異言語だし、たとえて言えばC++のclassって、Cの何なのさ?って意味くらい間違ってる。*1けど、自分の理解のために敢えて書く(w前振りはその辺にして、、、こんな風になるかなと思う。*2 言語 キーワード スタックに取れるか ヒープに取れるか …

と言うわけで、昨日の続き

昨日は時間切れで、ワケのわかんないところで終わったわけですが、、、その続きを多少。 サンプルコードのコメントである程度言いたかったことは言ってるので、書き損ねたみんなが大好きポインターを使った場合を(w ちなみに前提は昨日の通りで。 hoge *ptr=new hog…

C#とC++のクラス型の変数宣言の違い

多分、これが混乱させてる大元。*1 class変数を宣言するとき、、、 hoge h;みたいに書くわけですが、これが、C#とC++で90度くらい意味が違う。C#の場合 classの場合は、必ず自由領域*2にインスタンスが存在するわけで、じゃあ、"h"とは何か?と言えば、何のことはなく単な…

混乱の元

ここ数日、C++をいじってみて、えらく自分が混乱してるのがわかってたんですが、何があたしをそこまで混乱させていたのかちょこっと考えてみた。で、以下は考察。多分、混乱してる最大の原因は、"class"が意味論からして違ってると言うことと、変数宣言で例えば"hoge"…

致命的な間違い orz

C++

もはや魔法使ってる気分 - 時計屋の雑記帳 で書いていたサンプルコードに、色々と、いつも教えて頂いている、ir9さんより、 突っ込みを頂きました。 だよねー、delete thisして、thisのメンバフィールド返したら、結果は不定だよねぇ orz 今回はたまたま、呼び出し元…

もはや魔法使ってる気分

Boostを導入して、使いたかったスマートポインタ周りをちまちまいじってるわけですが・・・ なんかもうね、魔法使ってる気分だよこりゃ(w 以下は、VC++9にて、実際動いたことだけを確認していて、実際にこのような使い方が仕様上許されているのかは検証していないの…

std::exception.what()*2は何を戻すのか?

C++

自作例外をstd::exceptionからInheritして作ろうとしてたときに、ちょっと気になって試してみたので、テストコードと結果をメモ。 以下コード #include<iostream> #include<exception> int _tmain(int argc, _TCHAR* argv[]) { std::exception error("Msg"); const char* first=error</exception></iostream>…

ちょっと感動した

Boostを導入してみた。 C++でやれやしないと思っていたForeachStatementが使えたりする。 これは軽く感動した(wちなみに、入れた一番の理由はスマートポインタ使いたいから。 これは明日以降に・・・

[C#」[C++] 混乱の元になる前のメモ

最近、C++をいじってるので、C#と違う所をちまちまと。。。 (言語定義当たってないので、もしかすると、不完全な記述になってる可能性あります)1.classとstructC++とC#では全く意味が変わってくる。 C++の場合は、単にメンバスコープのデフォルトが変わるく…

 friend

C#から排除されてる概念なので、えれー苦労した。 で、そのメモ。・クラス外からprivateなメンバフィールドや、メソッドを参照可能になる。 ・使用可能なシグニチャはクラスメンバとして宣言する必要がある。 ・シグニチャはグローバルメソッド、クラス、特…

 [C++]えらく基本的だけど、理解できたこと

C++

最近C++いじってるわけで。 前々から不思議だったのが、Streamに対するManipulator。何が不思議って、こー書けるわけで(お約束) coutHello world!"

 覚え書き

・System.Data.SQLiteに関して 1.Outputは全てUTF-8。 2.OutputのEncordingを変更することは不可能(ソースレベルで手を加えりゃ出来そうだけど) 3.仮想テーブル(FTS3)に関しては、PRAGMA encodingが無視される そのまま喰う。(試しにCosoleのSQLite3使ったら…

ツリーのマッチング

#大嘘こいてるかもしれない orzつーわけで、一応メモ書き(多分ね、3割くらいしか当たってないと思うんだ orz)ASTの構築でたとえばこんな風に書く arguments : argument (','^ argument)* ;まぁ、こりゃ解る ","が出てきたら、それをノードとしたTree作れよー…

属性文法とかトークン属性とか

忘れないうちにメモ (とりあえず、TargetはC#)・Rule内のTokenは属性を持ってる。で、Actionの中で属性を使いたい場合、 $.AttrProp 見たく書くことで、取得可能。 以下は主な例・Text(Tokenの文字列を取得) ・Line(そのTokenが存在している行数を取得)他に…