C++/CLI」タグアーカイブ

template and generic

Fedora 15 待ちで Linux ネタが作れないのでしばらく .NET で。

.NET Tips ページもかなり整理が終わった。
UTF-8 INI 読み書き関連と STL/CLR はほとんど書き直し。
.NET Tips – L’Isola di Niente

C++/CLI を久々に使ってみて見つけた。

#include "stdafx.h"

using namespace System;

/* こっちだと演算子が使えないとエラーになる
generic <typename T>
T calc(T a, T b)
{
	return a + b;
}*/

template <class T>
T calc(T a, T b)
{
	return a + b;
}

int wmain(int argc, wchar_t* argv[])
{
	Console::WriteLine(calc(3, 7));
	Console::WriteLine(calc<double>(3.1, 7.3));
	Console::WriteLine(calc<String^>("私って", "ほんとバカ"));
	//=>10
	//=>10.4
	//=>私ってほんとバカ
	return 0;
}

template は generic へのマクロだと思っていたけど全然違う。
template キーワードなら C++ の STL と完全に同様なんだね。
使うかどうかは置いておいて。

せっかく C# の INI 読み書きクラスを作り直したんだから何かに使いたい。
SeeMe が現行 Opera で使えないのは知っているんだけどヤル気が出ない。
ヤルとしたらまったく違うインターフェイスに変更したいし、何か思いついたら。

PyGtk 関係は GTK3 が普通に使える GNOME3 Fedora に乗り換えが終わってから。
今整理したってあっというまに時代遅れになる、進化が早すぎるよ…

追記

今頃気がついたけどコレってもしかして C++ のテンプレート機能を呼んでいるだけ?
標準 C++ と何も違いが無いのだとしたら STL/CLR の存在価値って何なんだ。
知れば知るほど解らないコトが増えるのは標準 C++ と同じかよ…

C++/CLI FromHandle to Destroy

SHGetFileInfo API にてアイコン取得方法をエラそうに書いているんだけど

C++/CLI でアイコンと種類を取ってくる

てめえ…HICON を破棄してネェぞこのやろう!

という「え、ガベージコレクション仕様な言語なのにそんなもん必要?」な指摘が来た。

そういえばリソースの開放は必須だっけ、何故全自動な仕組みにしないのか解らないけど。
つか今の時代となってはメモリ使用量なんざジャブジャブでいいんじゃい。
Linux 版 Opera 11 のメモリリークっぷりを知っていると笑うところ。
って Ubuntu 10.10 のシステムモニタがおかしいの?マジで笑えないレベルだが。

ソレはいつもの Opera だし、ンナモンさえ割り切れないなら狐を使っとけ。
狐をあんまり使っていないから狐なら大丈夫かどうかは知らないけど…
んなことはどうでもよくて。

Icon.FromHandle メソッド (System.Drawing)

本当だ、FromHandle と Destroy はセットなんだね。
FromHandle 開放 でググったら即見つかった、解放と誤字している人多いな…
いや解放のほうが正しいのか?まあ破棄が一番正しいと思うけど…

しかたがないから書き換えた、Ubuntu から書き換えたので動作は試していない(ぉい!
とにかく、どこの誰かしらないけど指摘ありがとう。

C++/CLI で STL 2

@IT:特集:Visual C++ 2005 いままたC++が熱い!「C++/CLI」として大進化したVisual C++ 2005

少し気になって探してみたんだが…
んー昨日書いた STL/CLR はちょっと勘違いしていたみたい。

C++ は関数を抜けると勝手に確保したメモリは解放されるんだったよね。
つまり自動ガベージコレクションが起こるから意図的な gcnew は必要は無いんだ。
new が必要だったポインタをハンドル型に置き換えて gcnew すればいいってことなのねん。

それにネイティブと同じに書けると言っておいて例を出さないのは変かも。
ネイティブコードと混在できる C++/CLI だからこそのコードにしなきゃ意味はない。
つーことで書き換えた。

STL/CLR を使ってみる

しかし、んー困った。
STL/CLR って ostream_iterator や pair なんかは使えないのねん。

※追記@ pair はよくみたら cliext/utility に定義されていました…
※細かいコトはもう少し調べて後日。

コレで STL を名乗るのは…だがコンテナだけでも再現したのはスゲェのは認める。
全体像の一部だけ意図的に集中攻撃なんて民主党やマスゴミと同じウンコ以下だものね。

STL がどれほど議論と妥協(?)を重ねてきたのかを逆に思い知る、といえばカッチョイイかな?
.NET Framework 自体にもっと優秀な代替があるのにナニソレ?と言えれば更にカッチョイイ。

でも実際 FileStream クラスが ifstream と似通っているから次はこのネタにしようかなと。
Pet をはよ完成させろよ俺…

C++/CLI で STL

C++/CLI って STL が使えるんだね。
せっかくだから vector を使って簡単なコードを書いて試してみた。

STL/CLR を使ってみる

知らなかった、これは使えるかもしれない。
それより C++/CLI はコード補完がショボイのをなんとかしてくれい!
アンマネージドのコードはしかたがないけど C# との差がありすぎるぞこのやろう!

てか C++/CLI は WPF が使えないという致命的な欠点が…