excitemusic

渡米生活日々の備忘録。
by lily_lila
ICELANDia
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
カテゴリ
外部ブログリンク
「渡米生活。(日記)」
もう少し日々のツブヤキに近い内容はこっちに移動しました。
プログラム関係、web関係もそのうちこちらに移します。

「the Gerden of Ethel」
我が家のウサギブログ。
ウサギは、家に連れてきて最初の2週間以内に体調を崩す可能性が高い生き物です。飼う前にご一読を!
ちょっと待って、ウサギを買う前に…
最新のコメント
ブログパーツ
トライアルセット
記事ランキング
検索
ブログジャンル
以前の記事


(STL) iteratorってキャストできるのね(^^;)
こんなインターフェースははたして可能か??
(すみません、かなりオタクっぽいです。行末が切れてたらフォントのサイズをおとして下さい)

using namespace std;

class IParticlePtrVect {
public:
virtual ‾IParticlePtrVect() {}
typedef vector<I3IParticle*>::iterator iterator;
virtual iterator begin() = 0;
virtual iterator end() = 0;
};

ちなみに、I3IParticleはデータメンバなし、関数全部pure virtualの粒子クラス(Javaのinterfaceみたいなやつ)とします。

一方、実装は、

class MyParticlePtrVect : public IParticlePtrVect {
public:
virtual ‾MyParticlePtrVect() {}
virtual iterator begin() { return (iterator &)vector_.begin();}
virtual iterator end() { return (iterator &)vector_.end(); }
private:
vector<MyParticle> vector_;
}

という感じで、MyParticleはI3IParticleを継承した粒子クラス、ということにします。実際に実験した例はboostのshared_ptrを使っていて、データメンバのvector_はvector<shared_ptr<MyParticle> >型です。勿論、vector_にデータをつめるためのpush_back()みたいなのも実装しないとだめだけど割愛します。

で、問題は、このうちのbegin(), end()関数の中身

(iterator &)vector_.begin();

の(iterator &)型キャストは許されるのか、という話です……。

こんな面倒なことせんでも、普通にvector<I3IParticle*>を使えばええやん、という声が聞こえてきそうですが、serializationの事情により、実体に何がつまるかわからんvector<I3IParticle*>型のデータメンバは持ちたくない、というわけです。
(そのへんも自動で判断して正しく保存してくれる賢いpointerがshared_ptrじゃないのか、とめっちゃイチャモンつけたくなりますが、ユーザー定義粒子を含むライブラリをいちいちロードしないと動かんというのはUserが混乱する、という開発グループの方針に沿って苦肉の策というわけです。自分が使うモジュールのロードくらい自分で責任持つわい、と思う私はもう旧世代か??)

で、実験結果ですが。
なんと、コレ、動いちゃったりするんですね。。
まあ、stlのvectorのiteratorは実質ポインタだけど、stl_vector.hをのぞいてみたらただ生ポインタというわけでもなくて、こんな事できそうにもないと早々に諦めていたんですよ。
でも他にどうしても手だてがなくて、ダメモトでやってみたらコンパイルも通ってまともに動いてしまった! なんで動くのか未だにナゾ(笑)。

だれか、理由を知ってる人がいたら教えて下さい。。
(…って、コメント不可にしてるの忘れてた…)コメントOKにしました♪
[PR]
# by lily_lila | 2006-05-13 05:19 | Programing Tips | Comments(0)
(boost)既に存在するobjectへのポインタを保存するshared_ptr

作り方は

http://boost.cppll.jp/HEAD/libs/smart_ptr/sp_techniques.html#static

を参照。staticオブジェクトへのpointerを保存するshared_ptrの作り方だけど、「ユーザが自分でobjectの寿命を管理できて、もう指してるオブジェクトがないのにshared_ptrから関数を呼び出したりしない」という保証があるなら、shared_ptrに寿命を管理されていないobject、例えば配列の中のobjectなどへのshared_ptrを作ることができそう。
[PR]
# by lily_lila | 2006-05-03 09:35 | Programing Tips | Comments(0)
(boost) shared_ptrから生ポインタをgetする
この記事は、以下のリンクに移動しました。

「(boost) shared_ptrから生ポインタをgetする」
[PR]
# by lily_lila | 2006-05-03 08:28 | Programing Tips | Comments(2)
格闘の日々 (対boost)
仕事柄、C++プログラミングに関わっているのですが…
最近、C++のboostライブラリに大変手こずっております(涙)。
個人的にはROOT大好き! 全部ROOTで通して! じゃなきゃいっそJAVAにしろ!! なんて吠えてますが、最近の流行はboostなんだそうで。
フレームワークを作ってる皆様がboost大好きなもんで、こっちは新しい知識に追いつくので精一杯です…こんなことやってる場合じゃないのに(涙)

そんなわけで、このカテゴリはprogramingで試行錯誤した結果の備忘録です…。
[PR]
# by lily_lila | 2006-05-03 08:14 | Programing Tips
漸く免許とりました
アメリカで免許をとるのは、日本よりよっぽど簡単です。なにしろ、ペーパーテストさえ通ればいきなり路上で練習してよし(ただし隣に免許とって2年経った人を乗せるのが条件)、ロードテストには自分の車を使って良し(マニュアル/オートマ車の区別なし)、路上テストも言われた通り走るだけで道順覚える必要なしですから。私の場合、既に日本の免許を持っていたのでもっと簡単だったんですが、受けに行くヒマがなくてずるずる8ヶ月も国際免許で運転してました。日本の国際免許の有効期限は発行から1年、ところがアメリカでは州によって3ヶ月しか有効ではないとか、いろいろ脅されたんですが、ちゃんとDMVのホームページを読んでみたらWisconsinは1年以内のresidentは国際免許でも良いと書いてありました(2006年4月現在)。ただし、国際免許はトラブルがあった時に不利だったり、保険額がほぼ2倍だったりするので、やっぱり早めに免許とるに超したことはありませんが。以下、Wisconsin州の場合についてです。

続きはこちら
[PR]
# by lily_lila | 2006-04-21 05:41 | 渡米生活...手続・契約・交渉 | Comments(0)
誰もが通る道その3〜身分証明(State Issued ID)
さて、誰もが通る道の最終回は、State Issued IDです。

最初はなんじゃこりゃ、と思ったのですが、これが、何かを契約するときには必ず要求されるものの上位項目なんですよ。
もっとも、口頭では、Drivers Licenseを見せろ、と言われます。日本でも運転免許証は一番ポピュラーな身分証明ですが、勿論パスポートでもIDとして受け付けてもらえます。ところが、アメリカはそうはいかない。いくらパスポートがあると言っても、State Issued IDを見せろの一点張り、という場面に多々出くわします。そんなわけで、私は未だに免許をとっていないのですが(国際免許は持ってます)、面倒になって先にState Issued IDをとりました。
渡米して1ヶ月で発行できるようになりますので、これも、時期が来たらすぐに申請に行くべき項目のその2です。

続きはこちら
[PR]
# by lily_lila | 2006-02-18 04:55 | 渡米生活...手続・契約・交渉 | Comments(0)
誰もが通る道その2〜クレジットカード

さて、誰もが通る道その2はクレジットカードです…。

アメリカのクレジットカードは、文字通り、「クレジット(信用)」です。身分証明がなくたって、ちゃんとしたクレジットカードとヒストリを持っていればそれで身分証明になるくらいです。

クレジットヒストリ、という言葉は、日本ではあまり聞かないかと思います。勿論、日本でもカードでの買い物を踏み倒した、自己破産した、等の情報はカード会社に残り、次にカードを作る時に断られる、ということがありますが、カードを使わない契約でその履歴(ヒストリ)がものを言うことはありません。

アメリカでもその原則は変わらないのですが、問題は、こちらがクレジットカード社会だということです。携帯電話も一回契約してしまえば月々の支払いは小切手で良いのですが、最初の契約の時に、カード以外では受け付けてくれない、とかいう場面が多々あるわけです…(もっとも交渉次第なんでしょうが、そんな英語力があれば苦労はしない)
そして、困った事に、このヒストリというやつはアメリカで発行された(つまりSSNによって管理されている)カードのヒストリしか考慮されないのです。日本でいくら十年以上にも及ぶヒストリを持っていたって、まったくゼロ!なのです!!

続きはこちら
[PR]
# by lily_lila | 2006-02-14 04:56 | 渡米生活...手続・契約・交渉 | Comments(0)
誰もが通る道その1〜SSN
さて、アメリカに来て給料を貰える立場になって、誰もが必ず通らなければならない関門から(笑)。

アメリカには戸籍がありませんが、そのかわりに、非常に強力に国民(国民以外も)を管理出来るIDがあります。いわゆる、ソーシャル・セキュリティ・ナンバー(Social Security Number, SSNと略す)です。
恐ろしい事に、個人情報は全てこのSSNにコネクトされます。もともとは、税金を徴収する為のものなのですが、銀行口座の開設、電話等の契約、クレジットカード、State Issued IDと呼ばれる運転免許もしくは州発行の身分証明書の発行まで、しつこくしつこくこれを要求されます。無いと、ハナから相手にしてもらえません。つまり、人並みの生活が出来ません(爆)。

続きはこちら
[PR]
# by lily_lila | 2006-02-12 04:47 | 渡米生活...手続・契約・交渉 | Comments(0)
はじめまして。

ただでさえ仕事(と趣味)で更新せねばならんWebを山ほどかかえて、
ウェブログなんて、流行には絶対に乗らん!!!と思ってたんだけど……f(^^;)

やっぱウェブログって備忘録には便利だわあ(^^;)と思って初めてしまいました。。
(でもブログって言い方はなんか如何にもだからしない(笑)最初何の事だかわからなかったし)

渡米して6ヶ月、いろいろあった事を、忘れないうちに記録していこうと思います。
ただ、折角コメントを頂いても本当にレスをつける時間がないので、迷った末コメント機能はOFFにしてしまいました。コメント書いたのにレスがないって寂しいですもんね。
コメントONにしました♪ でも、超亀レスです、多分(ごめんなさい)。

独り言垂れ流しのウェブログですが、よろしければお立ち寄り下さい。。
[PR]
# by lily_lila | 2006-02-08 16:59 | その他 | Comments(0)