C++

コンテナから目的の要素を抽出できなくて死亡

C++

struct Doll { int id; std::string suffix; }; void rozen() { std::vector<int> favIdList = { 202, 707 }; // ソート済み std::vector<Doll> dolls = { // id でソート済み { 101, "dawa-" }, { 202, "kashira" }, { 303, "desu-" }, { 404, "dayo" }, { 505, "nanod</doll></int>…

(皆さんご周知の事ではありますが、偶には思い出すべきです故にあえて言いますが)VC6は糞

C++

#include <iostream> template<typename T> class A { public: A() { std::cout << "A()" << std::endl; } A(const A<T>& t) { std::cout << "A<T>()" << std::endl; } template<typename U> A(const A<U>& u) { std::cout << "A<U>()" << std::endl; } }; int main() { A<int> int1; A<int> int2(int1); A<long> long_(int…</long></int></int></u></u></typename></t></t></typename></iostream>

if() のカッコ内で変数定義出来なくて死亡

C++

struct A { A(){} A(int dummy){} operator bool () const { return true; } }; if(int n = 1) { // 当然OK } if(A a(1)) { // C2059 } if(A a) { // C2059 } if(A a = A(1)) { // OK } へー…真ん中もOKになりませんかね(ぉ

カンマ演算子で死亡

諸事情でカンマ演算子を使いたいなぁ…というシーンに遭遇したのですが、何でかコンパイルが通らなくて死亡。最終的に↓ココまで単純化したのですが、コンパイルが通らない…はて… int main() { int n = 1, 2, 3; // error C2059: 構文エラー : '定数' return 0…

ぐぐるさんの Protocol Buffers ってメモリリークしてる気がするのかしらー

C++

諸事情で、google さんが提供してる Protocol buffers を利用しています。さて、VC2008EEで "#include <crtdbg.h>" しつつ作業してたら、終了後にリーク報告受けちゃいました。こういう場合は当然自分のコードを疑うわけですけれども(ぉ)、"int main(){ …

はてな住民が増えて嬉しいおいらはついスグに内容に突っ込んじゃうの

mixi から はてなへようこそ!(ぉ > id:NetSeed さん先日、はてなに別荘を創られたというお話をお聞きし、速RSSを購読しておいたおかげでスグに記事が読めましたよ! その昔私もやりました さて、記事を見させて頂いて、危険なコードを発見してしまったの…

template と operator = を組み合わせてみたところ死亡(スペランカー先生のように)

C++

ソース #include <windows.h> #include <stdio.h> class A { public: A(int i = 0) : m(i) { puts("コンストラクタかしら"); } ~A() { puts("デストラクタかしら"); } A& operator = (const A& a) { this->m = a.m; puts("operator = かしら"); return *this; } int m; }; int ma</stdio.h></windows.h>…

如何にC++を知らないかを思い知った

C++

std::istringstream istr("AAAAAAAA99999999"); // 16進数で読み込みたい unsigned int nHi, nLow; istr >> std::hex; までは良かったけれど、"AAAAAAAA" と "99999999" で分割して読み込めなかった。orzsetw でいけると思ったんだがなぁ……。マニピュレータ…

ちょっと衝撃的だった関数宣言のされ方

C++

/* Cね */ char *funcA(), *funcB(int), *funcC(char*, char*); int main() { funcA(); funcB(169); funcC("kanaria", "kashira"); return 0; } …なるほど。 でも、良い子は真似しちゃ だ め よ

魔法少女ポリモル

C++相談室 part55http://pc10.2ch.net/test/read.cgi/tech/1164951094/657- 657 名前: デフォルトの名無しさん[sage] 投稿日: 2007/01/25(木) 21:27:33 クラス内のスタティック関数を ポリモルフィズムしたいのですが どうすればいいですか? 660 名前: …

templateとコピーコンストラクタを組み合わせたみたところ死亡(スペランカー先生のように)

C++

諸事情で、所有権付 auto_ptr が欲しくなったので、yaneSDK 2nd の auto_ptr をベースにして class B{}; class D : public B{}; auto_ptr<D> d(new D); auto_ptr<B> b1(d); auto_ptr<B> b2(b1) 見たいなのが出来るようにちょいと手を入れてみたわけです。(基底クラス</b></b></d>…

コンストラクタで引数1個を持つオブジェクトの配列の初期化(長いよ

C++

class A { public: A(int n){}; }; int main() { A a[3] = {1, 2, 3}; return 0; } 記憶の奥底で、できた…よなぁ…。 なんて思いつつコンパイルしてみたら本当にできてちょっとびっくり。^^;ぱっと見で微妙に見づらい感があるかもしれませんが…1つの有効…

boost::lambda な無名関数の戻り値の型が知りたい

C++

諸事情で template<typename IT, typename FN> typename FN::result_type my_for_each(IT itBegin, IT itEnd, FN fn) { // ごにょごにょ } こんな事がやりたくなったのですよ。std::mem_fun / boost::bind が fn に投げられる時は、FN に result_type が typedef されているので問題な</typename>…

コンテナに格納したオブジェクト。デストラクタの呼ばれる(==破棄される)順番は?

C++

vector なり list なりにオブジェクトをガンガン push_back していきますが、そのオブジェクトが破棄される時順番で破棄されるんだろうかと。 個人的には、末尾の要素から削除されると嬉しいんだけどなー とか思っているんですが…実験してみました。 コンパ…

他人のソースコードは読めないとは言うけれど

おすすめのソースは? | スラド デベロッパーboostのコード読むのと、どっちが幸せだろう…

Visual Studio 2005 の std::wout で正常に文字が出力されなくなる問題について。

……また VS2005 ぉー? もー… orz UNICODE ビルドを行ってますので、cout は利用せずに wcout を利用する事になります。 で、日本語文字列が上手く出力されないという問題に遭遇してまして「あー、"japanese" に locale 設定せにゃあきませんか」と気づいた訳…

Visaul Studio 2005 の vector::operator [] のおせっかい

C++

はじめに 7/10追記 int anArray[9]; int* p1 = &anArray[9]; // ダメ int* p2 = anArray + ARRAY_SIZE(anArray); // OK との事です。ダイレクトに終端のアドレス取るのではなくて、配列の先頭からn番目とするのが正しいようです。というわけで、下の記事は間…

boost::lambda と VS2005の accumulate

C++

ようやくインストールが終わったのかしら〜…相変わらず Visual Studio はセットアップに時間がかかるのぅ…。 まぁ、.NET Frameworks 2.0 とかインストールしなきゃならんわけですから、仕方ないですけどね。 さて、VS2005 が入ったということは! 薔薇乙女メ…

VCのabs と 定数

C++

abs(-4); を*1 Release ビルドしたところで、ちっとも定数になってくれなくてショック。 いやまぁ、実行時に評価されるようなコード吐かれたところで数ステップ増えるだけなので、気にするようなレベルじゃないんですが…… いやでもなんか悔しいよね。(ぉ 仕…

bind と lambda と _1さん の相性問題

C++

昨日のビルドできない問題ですが、結論としては boost::lambda::_1 と bind の _1 が被ってるとみなされることによる問題のようでした。つまり、VCのコンパイラ(プリコンパイル済みヘッダーを作る段階?)が悪いような気がします。それぞれの _1 は、違う名…

な、なんでじゃーーーー!!

C++

同じソース、同じ boost のバージョン、同じ WTL のバージョン、同じコンパイラ*1 を利用しているにもかかわらず、研究室・サブマシンでビルドが通るコードが メインマシンで通らないとかマジ勘弁してください。 。・゚・(ノД`)・゚・。 いやほんま意味不明…。対処の…

C++ と WinAPI の組み合わせって

相性悪いよなぁ…と強く思う今日この頃。^^;例えば、文字列を扱うのに std::basic_string<TCHAR> を利用したとします。で、Win32API で「文字列へのポインタ」と「文字数」の2つの引数を含む関数 -- 例えば TextOut 等を呼び出すコードを描いてみるわけですよ。 </tchar>…

boost::lambda と LNK2005 "シンボル沢山定義されてるよ" エラー

C++

プリコンパイル済みヘッダーで #include して次のコードをビルドしたのですよ。 size_t CMailCheckResult::GetTotalReceiveMailCount() { return std::accumulate(m_stlFieldList.begin(), m_stlFieldList.end(), static_cast<size_t>(0), boost::lambda::_1 + boost</size_t>…

俺的コピペ用

bool char unsigned char // signed char // これは必要なのかなぁ…^^; // wchar_t short unsigned short int unsigned int long unsigned long __int64 unsigned __int64 float double long double LPCTSTR // const char* // const wchar_t* const void*…

文字列操作関数はやっぱりヤヴァイよ

C++

Winnyの脆弱性が話題になってますが、こちら に、こんなことが書いてありました。 この脆弱性は、strcpy() で発生します。 やっちまったよ47氏!(涙 かなり前から strcpy や sprintf などは、バッファオーバーランする可能性が強いから使うなとか言われて…

そういえば

C++

"->" は "アロー演算子" と呼んでますが "->*" ってなんて呼べば良いんだろう…。 ".*" も… やじるしコメ演算子, ドットコメ演算子 で良いかしら〜?(ぉ

operator ->* について考えてみた。

C++

ちょぃと operator -> のオーバーロードする機会があったのですが、ふと「operator ->* ってのもオーバーロードできたんだよなぁ…」ということを思い出してみたわけです。 今まで ->* はオーバーロードした事無い為、良い機会だからオーバーロードしてみよう…

数値n が 2のべき乗の値であるかを確認したい

C++

一個上のエントリーで crt のコードとか漁ってた時に見つけたコード。 #define IS_2_POW_N(X) (((X)&(X-1)) == 0) う、美しい!! これは思いつかなかった……んだけど、まず、2^n の値であるかを確認する場面に遭遇したことがない事の気づいた俺。

C ランタイムライブラリの pow 関数が意図しない結果を返す

pow(10, -1);上記コードの戻り値として、Visual C++ 6.0 などの以前のバージョンの CRT では "0.1" が返りますが、Visual C++ .NET 2003 の CRT では、"0" が返ります。 との事。確かに、math.h 515行目近辺にこんなコードがありますねぇ。 template inline …

Effective C++ も読め …… 無ぇぇぇぇぇーーー!!

某匿名掲示板の過去ログを調べてみると…推薦図書 /必読書のためのスレッドPART29 より 921 名前: デフォルトの名無しさん 2006/03/06(月) 14:26:28 アスキーのアジソンウェスレイシリーズが軒並み絶版になってる余寒 c++のバイブルも重版未定で在庫限りっぽ…