(2005-12の一覧)
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

2005-12-08 Thu (他の年の同じ日: 2004 2006)

今日の戦利品
2005-12-08-3 / カテゴリ: [diary][ぬいぐるみ] / [permlink]

ドコモダケ
悲願達成。右2つが元々もってたやつ。[2005-09-05-1]
というか、なぜ今更ノーマルドコモダケが入荷されてるんだろ。
ちっこいやつはストラップで__予備に__多めにとってきた(笑)
そんな自分はボーダフォンユーザで仕事は...(笑)

あと
コリラックマ

(C++)メンバ関数のポインタでエラー
2005-12-08-2 / カテゴリ: [programming][c] / [permlink]

Visual C++にて
class Hoge {
:
  int foobar();
:
};
なメンバ関数に対し、クラス内の別メソッドで
*func = &this->foobar;
とすると
error C2276: '&' : 仮想関数のアドレスを取ろうとしました。
となってしまう。

このあたりによると、
staticメンバ関数か(C-likeな)グローバル関数でないと駄目です。
理由は、「関数のアドレスが決定できない」です。
なんだって。

オブジェクトが生成されるまでメンバ関数はメモリ上のどこにあるかわからない(というかない?)ってことかな。

とりあえずクラスの定義で
class Hoge {
:
  static int foobar();
:
とすれば OK になった。
実際の関数の定義は
int Hoge::foobar() {
:
:
}
で、static は要らない。(というか、つけるとエラーになる)

構造体のパディングをつめる
2005-12-08-1 / カテゴリ: [programming][c] / [permlink]

「pack プラグマ」を使う

[2005-12-04-1]の続き
struct fromdata {
  unsigned char first;
  unsigned char second;
  unsigned char third;
};

#pragma pack(push, 1)
struct todata {
  unsigned first: 6;
  unsigned second: 6;
  unsigned third: 6;
  unsigned forth: 6;
};
#pragma pack(pop)
(以下略)
これで結果が
from: 3
to: 3
になった。

#pragma pack(n)
これで、それ以降の構造体・共用体のパディングに適用される
#pragma pack(push, n)
#pragma pack(pop)
(push,n)で、以降の構造体・共用体のパディングを n を基準にし、(pop)で元にもどす

テストコード書いてみたが、エンディアン関係??でサクっとは base64 変換できねぇ...(@Intel pentium M)
前の日 / 次の日 / 最新 / 2005-12

2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12

最終更新時間: 2013-05-02 16:12