そのメンバ関数のインデントは見づらいよ。 あと、自分自身への memsetはやめて。ほんとに。 他にもいろいろ突っ込みどころが… こんなコードが世の中に出回っているのです…
typedef class _CFoo { public: int num; vector<int> numbers; // その他メンバ変数群 _CFoo(void); void func(void); // その他メンバ関数群がずらずら } CFoo, *LPCFoo; _CFoo::_CFoo(void) { memset(this,0,sizeof(CFoo)); }
使い方ヒント: 「これは臭う」という行を見付けたら、各行のをクリックしてマーキングしておきましょう(要Twitter OAuth認証)
何がうんこって、memsetできないというようなイレギュラーな仕様をこれでもかと持ち込んだどっかの言語こそがうんこ。 コーダーのせいじゃないよコレは。
「memsetできない」のが問題なのではなく、C++はどこかの聳え立つクソと違ってまともな型システムを持っているので、memset なんぞを濫用する必要がないというだけの話です。
そーいや、そーか。extern "c" とかどっちつかずで線引きが微妙すぎ。自分みたいな古代人だとC++は単なる"より良きC"って認識なんだけど、近代人にとってはオブジェクト指向言語なのね。K&Rの延長であるべきと思いこむ世代と、ARMが原点として見る世代の、ジェネレーションギャップか。古代人の視点だと「より良くないC」じゃんという。
C言語のstruct の習慣を引きずっている気がします。 メンバ変数がpublicとか _CFoo を CFoo で型名付け直しとか。 memset this はC言語互換構造体ならあるいは・・・コンストラクタを作ってるから互換ではない。あかん。 そもそも、C言語でも構造体に「取り敢えずmemsetで初期化」はしない方がいいと思います。
コメント投稿には、twitter認証が必要です。
Twitter認証
インデントは整形ツールでなんとかなるけど、memset(this は論外でしょ