【初心者歓迎】C/C++室 Ver.79【環境依存OK】

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。
※sage禁止です(と代々スレに書いてありますが自己判断で)。

【前スレ】
【初心者歓迎】C/C++室 Ver.78【環境依存OK】
http://toro.2ch.net/test/read.cgi/tech/1331894668/

◆ソースのインデントについて
半角空白やTABでのインデントはスレに貼ると無くなります。
そのため、アップローダーに上げるのも手ですが直接貼る場合は、
全角空白か に置換すると見栄えだけはよくなります。

【アップローダー】(質問が長い時はココ使うと便利)
http://codepad.org/ (コンパイルもできるし出力結果も得られる[]privateをチェック)
http://ideone.com/ (時間帯によってはcodepadが重い事があるのでここも利用)
2デフォルトの名無しさん:2012/06/30(土) 19:42:33.67
m_はウンコだったハンガリアンが残した唯一の正の遺産
3デフォルトの名無しさん:2012/06/30(土) 19:45:28.28
>>2
だから要らないって。
4デフォルトの名無しさん:2012/06/30(土) 19:45:48.94
そういえばthis->の強要って出来るんかな
5デフォルトの名無しさん:2012/06/30(土) 19:46:21.42
> 978+1 :デフォルトの名無しさん [sage] :2012/06/30(土) 18:03:27.62
> >>976
> 見ることが目的であって、記述ミスが目的じゃないだろ
> そもそも、thisなしで困るような関数書くな。
> 結局this忘れでも、メンバーにm_つけ忘れでも大差ねぇよ

メンバにm_付け忘れは宣言の時一回気をつければいいだけ
this忘れは使う時に毎回気をつけなければならない
6デフォルトの名無しさん:2012/06/30(土) 19:52:34.58
Pythonのselfと対をなす問題だな
7デフォルトの名無しさん:2012/06/30(土) 19:54:10.03
>>1 >> 乙 >> endl;
8デフォルトの名無しさん:2012/06/30(土) 19:55:19.00
>>3
副作用をちゃんと意識してプログラム組んでんのか?
ローカル変数でも可能な限り副作用は避けて、
副作用に特に気をつけるべきメンバ変数には目印を付ける
バグを減らすには重要だよ
9デフォルトの名無しさん:2012/06/30(土) 20:07:58.52
変数のスコープってのはとても重要な概念で、狭いほどバグは出にくい
スコープが広いほど副作用に気をつける必要がある
いつどこで変更されるか分かり辛くなる

グローバル変数はその最たる物だが、
メンバ変数もスコープが広くそれなりに危険な物で、
メンバ変数とそれ以外は区別がついた方が良い

副作用に対する意識の程度が
m_の重視/軽視に繋がると思うね
10デフォルトの名無しさん:2012/06/30(土) 20:29:08.10
メンバはアッパーキャメルにしてるからm_は付けない
11デフォルトの名無しさん:2012/06/30(土) 20:33:07.56
なにそれキモい
12デフォルトの名無しさん:2012/06/30(土) 20:44:21.78
JavaとかC#じゃよく見るけどC++ではどうだろ
13デフォルトの名無しさん:2012/06/30(土) 20:48:26.88
メソッドやプロパティはともかく、メンバ変数にアッパーキャメルはJava,C#でも見ないよw
14デフォルトの名無しさん:2012/06/30(土) 20:59:13.80
いつまでこの話続けるんだよ
15デフォルトの名無しさん:2012/06/30(土) 21:35:20.30
>>6
Pythonはself(C++のthis相当?)が必須なのか。それいいな。
16デフォルトの名無しさん:2012/06/30(土) 21:38:43.16
Rubyは@がつく
こういう風に文法で制限してあるといいよね
17デフォルトの名無しさん:2012/06/30(土) 21:40:30.84
->*をthisなしで書ければいいなとは思ったことがある。
18デフォルトの名無しさん:2012/06/30(土) 21:50:51.76
クラス外かどうかで扱いが変わるのを避けたかったのかな
普通のメンバ関数も扱いが変わるのだから気にする必要もないと思うが
19デフォルトの名無しさん:2012/06/30(土) 22:54:28.69
そういえばメンバ関数にプリフィクスを付けるのは聞いたことがないや
20デフォルトの名無しさん:2012/06/30(土) 23:00:26.93
スコープの壁を突き破って力強く大胆に変数を操作したい漢にとって

必要な手間なんでしょ
21デフォルトの名無しさん:2012/06/30(土) 23:43:03.73
->*
アッー!な演算子だな。
自分で使うときはいつも思うよw
22デフォルトの名無しさん:2012/06/30(土) 23:48:13.27
それにしても時々->=演算子が欲しいと思うときがある。
リストとか木でp->=next だの p->=leftだのと書けたら楽やなぁと。
23デフォルトの名無しさん:2012/06/30(土) 23:48:28.05
>>19
稀に見る事はある

ただ、グローバル名前空間での関数定義を行う事が少ないので
あまりプリフィクスが必要にはならない
24デフォルトの名無しさん:2012/07/01(日) 17:09:03.55
クラスの定義が大量の内部クラスのせいで500行くらいいきそうなんだけどこれって普通?
25デフォルトの名無しさん:2012/07/01(日) 17:14:13.21
行数が基準になるわけじゃないけど多いと思うなら分けなさいよ
内部クラスを出来るだけ兄弟クラスにして
それらをファイル分けて名前空間もnamespace detail{}って押し込めたらいい
26デフォルトの名無しさん:2012/07/01(日) 18:05:01.43
あーそっかファイルもディレクトリ作れば衝突しないからそれでよかったんだ
ありがとうございました
27デフォルトの名無しさん:2012/07/01(日) 22:06:54.39
1000行とか普通に行く
他人と共有しないならいいんじゃね?
28デフォルトの名無しさん:2012/07/01(日) 22:10:03.92
最近C++の存在に気づき
やり始めようと思ったのですが
色々言語があるらしく 自分の性格だと最初の部分で詰みそうで困ってます。
どうしたらよいですか?
29デフォルトの名無しさん:2012/07/01(日) 22:18:54.52
無理だったら詰めばいいんじゃね?
30デフォルトの名無しさん:2012/07/01(日) 22:20:08.11
難しさにやりがいを感じないと合わないよね
31デフォルトの名無しさん:2012/07/01(日) 23:13:37.08
>>28
とりまクラス使ってみ

Cとの違いに驚くよ
32デフォルトの名無しさん:2012/07/01(日) 23:17:39.52
>>28
> 色々言語があるらしく
C++じゃねーのかよ?
33デフォルトの名無しさん:2012/07/02(月) 00:38:19.94
>>22
.=演算子がCにあったら->=演算子も作られていただろうね

C/C++言語は結構対称性を重視した設計になってるように見える(PDP-11の思想が
入り込んだんでしょうね)だからかな

68000にPDP-11の思想がそのまま受け継がれ、68000が乗ったPC(X68000等)の
Cコンパイラが吐くコードもまた綺麗だった
しかしシェアをIntelに奪われ今はColdfireだけになってしまった

8086に最初にCがインプリメントされた時にはレジスタの使用目的が固定されていたため
制約が多く、最適化に著しく不利だった
それにセグメントの問題でメモリモデルという面倒な概念を導入せざるを得なかった

80386になって大幅に制約が取り払われてようやくC言語が簡単にインプリメント出来る
ようになった、というか明らかにC言語を意識してるよねあの命令セット

x64でレジスタが倍増してさらにCコンパイラから見ると楽になったがREXプリフィックスは
お世辞にも綺麗とは言えない、だが互換性のためには仕方がない
34デフォルトの名無しさん:2012/07/02(月) 14:13:53.33
SetProcessWorkingSetSizeExで
FlagsにQUOTA_LIMITS_HARDWS_MIN_DISABLE|QUOTA_LIMITS_HARDWS_MAX_DISABLEを
指定する場合と、
SetProcessWorkingSetSizeは同じですか?
両方ともソフトリミット?
35デフォルトの名無しさん:2012/07/02(月) 14:34:03.08
GetProcessWorkingSetSizeEx使ってためしてみたら?
多分、Set〜Size(,,) とフラグを指定しない Set〜SizeEx(,,,0)は
フラグを変更しないんじゃないかな
36デフォルトの名無しさん:2012/07/02(月) 17:02:51.90
そっか、読めばいいのか。
簡単なことにきがつかんかった。
すんません。
37デフォルトの名無しさん:2012/07/02(月) 23:23:36.14
cppでのクラスのメンバ関数定義の前にメンバ変数に値を代入してるような文があるのだけど、これはなにを意味しているの?
38デフォルトの名無しさん:2012/07/02(月) 23:52:12.05
初期化子リスト
39デフォルトの名無しさん:2012/07/03(火) 01:53:37.16
snprintf()やstrncpy()など、について質問です。

これらの関数は書きこむバイト数を指定できますが、
その値を超える文字列を書きこもうとした場合の場合、正常に書き込まれるものの最後に\0が入りません。

さて、バッファのポインタとサイズが正常に指定されている場合、
文字数に関わらず、書き込み用バッファの最後に決め打ちで\0を突っ込むだけで十分に安全と考えて良いでしょうか。
大丈夫そうだとは思うのですが、何か問題があれば教えてください。
40デフォルトの名無しさん:2012/07/03(火) 02:02:22.40
用途次第
41デフォルトの名無しさん:2012/07/03(火) 02:48:26.10
目的はバッファオーバーランを防ぎたい。
また、1つのバッファを\0区切りで複数に分けたり、すでにある文字列を置換するような使い方はしない。
42デフォルトの名無しさん:2012/07/03(火) 04:57:14.52
moveについての質問.

struct Hoge
{
  Hoge&& foo()
  {
    Hoge tmp(*this);
    ...
    return std::move(tmp);
  }
  ...
};

Hoge x;
Hoge y = x.foo();

できるだけコピー減らすためにこんな使い方をすべきなのかと思ったのだけど
これじゃやっぱりyのムーブコンストラクタの前に戻り値は破棄される?
素直に値返しにすべきだろうか

値返しにしたとしても関数の戻り値がrvalueになって
yのムーブコンストラクタを呼ぶっていう認識があっているかも聞きたい
43デフォルトの名無しさん:2012/07/03(火) 06:55:15.45
戻り値は次の文が実行されるまで破棄されない
ttp://ideone.com/taMcy
gccだと戻り値最適化でムーブコンストラクタさえよばれないな
VCだとムーブコンストラクタは呼ばれた
44デフォルトの名無しさん:2012/07/03(火) 07:54:05.49
returnした変数は返り値へ勝手にムーブされるし
返り値はrvalue(より細かく言えばprvalue)だからそんな小細工いらないよ
45デフォルトの名無しさん:2012/07/03(火) 08:06:33.53
おおわかりやすい,ありがとう
ムーブコンストラクタすら呼ばれないこともあるとは思わなかったけど
確かにそれで済むのか

いろいろメンバ追加してみたりしても呼ばないような最適化かけられてるようだし
下手なことすると最適化の邪魔してしまうのかな,これは

prvalueだとかxvalueだとかの区別がわかってないんでそっちも理解しようとしてみる
46デフォルトの名無しさん:2012/07/03(火) 08:23:12.24
>>45
邪魔というより危険。 >>42のコードもうまく動かない
何故ならtmpが解体されたあとにムーブコンストラクタが呼ばれるから
http://ideone.com/QTzeq

もしポインタを扱っていたら...?
47デフォルトの名無しさん:2012/07/03(火) 09:46:06.04
>>46
なるほど,やっぱり先に関数スコープ抜けた段階で破棄されちゃうんだね
ムーブコンストラクタに渡るのは不定値か
手元でやってたのがうまく行ってるように見えたり
どこが原因かわからない不整合があったりしてたんだけどすっきりした

コピーを作って(何かしら操作した後で)返すならやはり値返しが必要で
かつ最適化はかかるからコスト的にも気にすることはないと
48デフォルトの名無しさん:2012/07/04(水) 22:38:43.01
std::shared_ptr ってg++でも使えますの? 4.4系ですが
49デフォルトの名無しさん:2012/07/04(水) 22:42:23.77
おれのg++では使える
50デフォルトの名無しさん:2012/07/04(水) 22:52:03.76
OK
4.4系じゃ使えないわ
51デフォルトの名無しさん:2012/07/05(木) 00:16:46.87
std::tr1::shared_ptr ならどうだ
52デフォルトの名無しさん:2012/07/05(木) 00:19:55.70
>>50
以御封
53デフォルトの名無しさん:2012/07/05(木) 11:17:13.83
>>51
tr1なんてない って言われた
54デフォルトの名無しさん:2012/07/05(木) 17:46:05.67
boost入れろ
55デフォルトの名無しさん:2012/07/07(土) 17:11:38.80
try
{
 if( argc ) throw;
}
catch(...)
{
 puts( "From Throw" );
}

MS C/C++ Optimized Compiler 9.0だとgotoに最適化されねぇのな。
糞だな。
56デフォルトの名無しさん:2012/07/07(土) 22:18:11.31
gotoに最適化とかアホじゃないの
57デフォルトの名無しさん:2012/07/07(土) 22:21:57.71
clangとかするけどな。(厳密にはjmp命令だが)どこがアホだと思ったのやら
58デフォルトの名無しさん:2012/07/08(日) 13:42:28.29
C++03のソースをC++11コンパイラでコンパイルするときに
気をつけなければならないのはautoの扱いだけ?
59デフォルトの名無しさん:2012/07/08(日) 14:13:25.25
とりあえず何も気にせずコンパイルしてエラーが出たりなにか動作が違うような気がしたら調べろ
60デフォルトの名無しさん:2012/07/08(日) 14:43:33.14
C++03でわざわざautoなんて使わねーだろ
61デフォルトの名無しさん:2012/07/08(日) 20:44:44.65
規定が全部staticのスパコン用コンパイラーはどうするんだよ
62デフォルトの名無しさん:2012/07/08(日) 21:06:26.03
それもうC++03じゃなくね
63デフォルトの名無しさん:2012/07/08(日) 21:18:02.44
規格違反のコンパイラなんて知らないよ!
64デフォルトの名無しさん:2012/07/08(日) 21:33:50.71
ローカル変数が既定でautoかどうかは未定義だったろ、11は知らんけど
65デフォルトの名無しさん:2012/07/08(日) 21:37:06.07
デフォでstaticに出来ないんならなんのためにautoキーワードが生き残ってたんだと思うんだよ。
66デフォルトの名無しさん:2012/07/08(日) 21:40:14.47
30年前に書かれたソース用
67デフォルトの名無しさん:2012/07/08(日) 22:02:14.94
30年前のソースのためにautoが残ってたんなら
なんでorverrideキーワードがあっさり消えたんだよ
デフォルトstaticな処理系が現役だからに決まってるだろ
68デフォルトの名無しさん:2012/07/08(日) 22:08:51.34
少なくとも未定義ではないだろ・・・
69デフォルトの名無しさん:2012/07/08(日) 23:03:57.44
charT ってなにをincludeすれば使えるの?
70デフォルトの名無しさん:2012/07/08(日) 23:25:54.72
charTてなーに?
71デフォルトの名無しさん:2012/07/08(日) 23:46:37.60
>>70
なんかテンプレートっぽい
72デフォルトの名無しさん:2012/07/08(日) 23:54:55.22
エスパーさん出番です
73デフォルトの名無しさん:2012/07/09(月) 00:30:21.84
basic_stringっぽい雰囲気?
74デフォルトの名無しさん:2012/07/09(月) 00:45:32.33
テンプレートパラメータだろ。charかwchar_tを指定しろ

厳密には要件を満たすようなchar_traits<charT>の特化版を用意しておけばどんな型でもとりあえずいいんだろうけど
75デフォルトの名無しさん:2012/07/09(月) 00:52:29.57
オペレータって、=以外は継承されるの?
76デフォルトの名無しさん:2012/07/09(月) 01:10:45.80
>>75
継承されないもの

コンストラクタ
コピーコンストラクタ
デストラクタ
代入演算子関数
friend属性
77デフォルトの名無しさん:2012/07/09(月) 01:11:27.25
そういう意味ではoperator=() 以外は継承されると言ってもいいな
78デフォルトの名無しさん:2012/07/09(月) 10:55:36.46
今C++の勉強してるのですが、本には「cstdio」をインクルードした場合、
「stdout」の記述も「std::stdout」となるような記述がありますが、
Borland C++で試した所、「std::stdout」は未定義でした。
普通に「stdout」とすれば問題なく使用できます。

本が誤っているのでしょうか?処理系の実装の違いでしょうか?
79デフォルトの名無しさん:2012/07/09(月) 11:11:44.83
BCCのバージョン何よ
5.5.1なんか問題外だぞ
80デフォルトの名無しさん:2012/07/09(月) 11:13:37.02
度々すみません。>>78に誤りがありました。

> Borland C++で試した所、「std::stdout」は未定義でした。
> 普通に「stdout」とすれば問題なく使用できます。
上記はBorland C++ではなくVisual C++でした。

Borland C++の場合、いずれでもコンパイル時にエラーが出ます。
81デフォルトの名無しさん:2012/07/09(月) 11:16:34.15
>>79
> 5.5.1なんか問題外だぞ
5.5.1でした。
どこで最新版を入手できますか?
82デフォルトの名無しさん:2012/07/09(月) 11:21:18.09
>>81
BCCの無料版は5.5.1のみ

後は製品版のXE2とかに付属してる
IDEは金払わないと評価期間が終了すると使用不能になるけどBCCだけは使える

正式名称はEmbarcadero C++ 6.44

そのうちこちらにもプロテクト掛けられるかもしれないけど
俺は金払ってるから関係ない
来年からXE3が出て64bitもコンパイル出来るようになる(予定)
83デフォルトの名無しさん:2012/07/09(月) 11:30:13.17
>>82
ご丁寧にありがとうございました。
今後、所持する環境で余りにも差異があるようでしたら、
Embarcadero C++ 6.44の導入を検討します。

ANSI C++準拠謳っていたので不思議に思っただけだったので、
stdout等の識別子に関しては、
今は実装の違いと言うことで流しておきます。
84デフォルトの名無しさん:2012/07/09(月) 11:49:57.76
来年じゃなかった今年8月か
まだパンフ来てないけど
85デフォルトの名無しさん:2012/07/09(月) 11:53:32.39
ちなみにこれECC 6.44でやったら通らない

#include <cstdio>

int main(void)
{
fprintf(std::stdout, "test\n");

return 0;
}

これなら通った

#include <cstdio>

int main(void)
{
fprintf(stdout, "test\n");

return 0;
}

つー事で準拠度を期待するならVCかgccにしとけ
86デフォルトの名無しさん:2012/07/09(月) 11:53:40.33
何でBCC5なんて12年も昔の超古いコンパイラ使ってるんだ?
今はWindowsならVisual C++ Express, Linuxならclangがあるじゃん
両方とも無料だし
87デフォルトの名無しさん:2012/07/10(火) 04:58:21.71
Visual C++に統一してくれ〜
ちょっと前のだったら教本に
Borlandのつかわれてる
88雲雀:2012/07/10(火) 05:05:44.94
バカは相手されなくなるの典型だな>>86
89デフォルトの名無しさん:2012/07/10(火) 21:40:10.61
>>86
ちょっと前でも、2003年ごろからPlatform SDKと.Net Framework SDKで
コンパイラーがタダで手に入ってたのにな。
90デフォルトの名無しさん:2012/07/10(火) 23:23:10.41
つかgcc使えよ。
91デフォルトの名無しさん:2012/07/12(木) 16:07:57.52
string hoge = "hoge";
printf("hoge=%s\n",hoge); //★

warning: format ‘%s’ expects type ‘char*’, but argument 2 has type ‘int’
になっちゃうけど、c_str()を呼ぶことなく使いたいので
どうしたらよいでしょうか
92デフォルトの名無しさん:2012/07/12(木) 16:16:56.71
printfを投げ捨ててboost::formatを使う
93デフォルトの名無しさん:2012/07/12(木) 16:21:21.96
それは五十歩百歩
94デフォルトの名無しさん:2012/07/12(木) 16:27:22.62
>>92
あえてprintfにこだわりたい
95デフォルトの名無しさん:2012/07/12(木) 16:29:54.43
>>91
間違ってるんだからどうしようもない
96デフォルトの名無しさん:2012/07/12(木) 16:31:08.45
C++で型安全性がないprintf使うとかねぇわ
9795:2012/07/12(木) 16:43:16.31
>>91
myprintf実装すれば
98デフォルトの名無しさん:2012/07/12(木) 17:03:05.53
整数値や文字列でも結構ややこしいのに浮動小数点数の実装は想像つかんな
9995:2012/07/12(木) 17:25:38.99
stringだけ対応すればいいのだろう
100デフォルトの名無しさん:2012/07/12(木) 18:20:56.12
つかC言語の関数使うのにC言語文字列を返すc_str()を使いたくないってどういうことだよww
CかC++どっちかで統一しろよw
101デフォルトの名無しさん:2012/07/12(木) 18:27:12.95
>>100
%s ってわかってんだからconst char*にキャストしろよ
ってことだよ
102デフォルトの名無しさん:2012/07/12(木) 18:33:29.43
言語仕様に%s認識する機能はねーよwww
103デフォルトの名無しさん:2012/07/12(木) 19:26:19.49
C++って可変引数どうなってんだろ
104デフォルトの名無しさん:2012/07/12(木) 19:55:17.83
どうも何もC++内のCの機能は基本的にそのままだ
105デフォルトの名無しさん:2012/07/12(木) 21:07:25.26
,演算子をオーバーロードしてなんとか
106デフォルトの名無しさん:2012/07/12(木) 21:09:52.20
>>105
カンマオーバードライブ出来るのか
107デフォルトの名無しさん:2012/07/12(木) 21:12:37.99
暗黒色の波紋疾走(アイティーブラックオーバードライブ)
108デフォルトの名無しさん:2012/07/12(木) 21:24:33.30
>>106
Britz++がやってる
変態過ぎて感心する
109デフォルトの名無しさん:2012/07/12(木) 21:30:29.00
変態でもなんでもないだろ基本的なことだし
110デフォルトの名無しさん:2012/07/13(金) 00:33:57.28
でもMore Effective C++には&&, ||, カンマ演算子はオーバーロードしないように
ガイドライン書かれてたろ理由を付けて
読んだ?
111デフォルトの名無しさん:2012/07/13(金) 05:37:56.40
ME C++はこの世の真理でも神でも法律でも無いからな
ME C++に書いてある問題を理解していないのは論外だが
理解した上でどういう行動に出るかは好きにしたらいい
112デフォルトの名無しさん:2012/07/13(金) 19:41:45.33
スコット・メイヤーズは彼のキャリアのすべてを、C++で失敗したりしくじったり
するためのあらゆる方法を示すことに費やしている。(ところで、スコットの本
Effective C++の第3版が出たところだが、この本は前の版から完全に書き直されている。)
http://local.joelonsoftware.com/wiki/%E9%96%93%E9%81%95%E3%81%A3%E3%81%9F%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AF%E9%96%93%E9%81%95%E3%81%A3%E3%81%A6%E8%A6%8B%E3%81%88%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%99%E3%82%8B
113デフォルトの名無しさん:2012/07/13(金) 20:10:41.82
禿は罪作りだな
114デフォルトの名無しさん:2012/07/13(金) 20:20:13.66
>>112
あっEffective C++ 第3版も持っているんだった
今読んだら&&、||、, に関する項目は見つからず
More Effective C++ 第3版は洋書でも出ていない
日本語版のみ訳が酷すぎたので新装版が出ているだけ
さっさと出せゴラ(▼_▼メ)
115デフォルトの名無しさん:2012/07/13(金) 21:13:04.74
俺も例外や演算子オーバロードはおかしな機構だと思ってたんだよ
116デフォルトの名無しさん:2012/07/14(土) 11:02:12.52
特定のクラスの特定のメソッドをあるプロジェクトの中では外部から呼び出すことを禁止したいのだけど可能かな?
例えば標準のベクターの[]演算子は禁止してatのみを許したいといった感じで
117デフォルトの名無しさん:2012/07/14(土) 11:05:18.20
友達
118デフォルトの名無しさん:2012/07/14(土) 11:14:39.63
C++にメソッドなんて機能はないからな
自前でメソッド機能用意してるなら、自分でなんとかしろとしか
119デフォルトの名無しさん:2012/07/15(日) 15:07:09.82
初めて質問させていただきます。
現在私はシューティングゲームを製作中で
オブジェクト(弾や敵、プレイヤー等)生成時に製造番号を振ってくれるクラスを作成したのですが
IDを解放する時に、std::listの挙動がおかしくなっていて、困っています。
IDの生成は各オブジェクトのコンストラクタで
IDの解放は各オブジェクトのデストラクタで呼び出しています。

改行が多いと言われてしまったので、次にコードを書きたいと思います。
場所をとってしまってすみません。

120119:2012/07/15(日) 15:12:00.05
以下がコードです

//IDを生成するクラス
class ID_Factory
{
public:
//コンストラクタ
_ID_Factory(){}

public:

_//IDを生成する
_int CreateID();

_//IDを解放する
_void ReleaseID( int id );

//メンバ
private:
_std::list< int > active_id; //使用されているID
_std::queue< int > free_id; //開放されたID
};
121119:2012/07/15(日) 15:13:15.60
//IDを生成する
int ID_Factory::CreateID()
{
__//使いまわし可能なIDがある場合
__if( !free_id.empty() )
__{
____//先頭を取り出す
____int id = free_id.front();
____//先頭削除
____free_id.pop();
____//使用中のIDとして登録する
____active_id.push_back( id );
____return id;
__}
__//新たにIDを作成する必要がある場合
__else
__{
____//現在使用されているID数+1の値を次のIDとする
____int id = active_id.size() + 1;
____active_id.push_back( id );
____return id;
__}
}

//IDを解放する
void ID_Factory::ReleaseID( int id )
{
__free_id.push( id );
__active_id.remove( id );
}
122119:2012/07/15(日) 15:14:07.88
ReleaseID呼び出し時にエラーで落ちるので、
active_id.remove( id );
の直前にブレークポイントをつけて値を確認したところ
active_idの値が以下のようになっていました。

[0] 1 int
[1] 2 int
[2] -17891602 int
[3] CXX0030: エラーです: 式を評価できません
(error) 0 int
(error) 0 int
(error) 0 int
(error) 0 int
(error) 0 int

removeやeraseを使って、正常にノードの関連付けが行われない場合があるのでしょうか..?

連投すみませんでした。
123デフォルトの名無しさん:2012/07/15(日) 15:44:01.19
ReleaseID自体に問題はないとおもうがあ
落ちる要素がメモリ不足以外にないし
まあこんなこだわった仕様にしなくてもゲームだったらIDは整数インクリメントして返すだけで十分だと思うよ
普通のゲームならシーンごとにIDリセットすれば32bitの整数を全範囲使いきることはまず不可能
124デフォルトの名無しさん:2012/07/15(日) 15:56:23.66
std::list<T>のeraseってT取れないはずだが。。。
125デフォルトの名無しさん:2012/07/15(日) 15:59:10.34
問題はあんたが書いてないところにある
126デフォルトの名無しさん:2012/07/15(日) 15:59:13.72
ってeraseじゃなくてremoveか。
念のため聞いとくけど、スレッド使ってないよね?
127119:2012/07/15(日) 16:04:27.54
>>123
うーん、そうですか..
原因は今後探っていく事にして、とりあえず仕様変更する事にします。
確かに使いまわす必要もないので、インクリメントして使うようにします!
ありがとうございました。
128119:2012/07/15(日) 16:08:19.01
>>124
eraseでもコンパイルエラーは出ませんでしたが、removeと同様に落ちました

>>125
もっと監視する範囲を広げて確認してみます

>>126
スレッドは使っていません
129デフォルトの名無しさん:2012/07/16(月) 02:55:00.87
配列の文字列数を調べるために、配列に文字が入っているかどうかを調べたいのですがどうすればいいでしょうか?

//word[i]は入力した文字列
int moji;
for (int i=0;i<=40;i++){
   if(word[i] >= 0) moji = i-1; break;
}

これでword[i]の文字を一文字ずつずらして調べたんですが、条件がどうもうまくいかないみたいです。
130デフォルトの名無しさん:2012/07/16(月) 03:37:45.99
もとのプログラムを尊重した修正をするなら

//word[i]は入力した文字列
int moji;
for (int i=0;i<=40;i++){
   if(word[i] == 0){ moji = i-1; break; }
}

って感じか
ちゃんと\0入ってるか疑問だが
131デフォルトの名無しさん:2012/07/16(月) 04:48:15.99
std::wstring を使うのが色々楽だろう
132デフォルトの名無しさん:2012/07/16(月) 06:47:07.02
>>129
break;したらi++はされないと思うんだな
133129:2012/07/16(月) 14:13:18.26
参考にして弄ったらなんとかなりました、
ありがとうございました。
134デフォルトの名無しさん:2012/07/16(月) 19:26:15.81
>>119
Release時に入力したIDが存在しないIDなんじゃないか?
そもそもIDなんのためにIDなんて使うんだ?
ディスクに保存する際の永続化にでも使うのか?
単に対象のオブジェクトを指すポインターで十分じゃないのか?
ポインターとsetの組み合わせの方が管理が楽だと思うぞ。
135デフォルトの名無しさん:2012/07/16(月) 19:27:45.51
>>134
通信
136デフォルトの名無しさん:2012/07/16(月) 19:31:48.05
初めてで通信かよ・・・
boostとかのシリアライザー使ったら?
今の問題解決力じゃ難しいだろ
137デフォルトの名無しさん:2012/07/16(月) 22:15:38.21
URLのホスト名を抽出するプログラムがわからない。
138デフォルトの名無しさん:2012/07/16(月) 22:19:43.38
悪いことは言わんからPythonみたいなテキストプロセッサー系の
動的片付け言語使ったら?
139デフォルトの名無しさん:2012/07/16(月) 22:23:33.45
ルンバみたいな?
140デフォルトの名無しさん:2012/07/17(火) 09:11:24.33
http://blogs.msdn.com/b/vcblog/archive/2012/07/16/10330327.aspx
MSの中の人にお願い
このビデオ翻訳して欲しいお(´・ω・`)
141デフォルトの名無しさん:2012/07/18(水) 09:49:09.19
パイソンって組み込み簡単?
テキスト処理とかめんどい事はルア使ってんだが
142デフォルトの名無しさん:2012/07/18(水) 14:02:39.82
あるスレッドで作成したFiber、またはSetTimer、またはQueueUserAPCに
他のスレッドから切り替えさせる方法はありませんか?
143デフォルトの名無しさん:2012/07/18(水) 14:13:01.44
門柱にでもヘッドバットして単語「スレッド」を忘れればいいと思うよ
144デフォルトの名無しさん:2012/07/18(水) 14:26:29.26
>>141
簡単だよ〜
IronPythonってやつ便利だぜ
145デフォルトの名無しさん:2012/07/18(水) 16:15:54.03
>>142
何をやろうとしてるの?
146デフォルトの名無しさん:2012/07/18(水) 23:09:29.86
何でもいいだろお前の感知するところではない
147デフォルトの名無しさん:2012/07/19(木) 11:46:58.30
OSの無いマシンでwebサーバ作んなきゃなんなくなったんだけど
どっかにコピペ可能なサンプルある?
なきゃ諦めてチマチマ作るしかないんだけど
148デフォルトの名無しさん:2012/07/19(木) 12:30:03.75
>>147
マシンのスペック
149142:2012/07/19(木) 13:20:46.58
数秒制御が返ってこない関数の最中にWndProcを処理したいんです。
SetTimerはメッセージポンプ(?)が、
QueueUserAPCはSleepExなどが関数を呼び出しているだけみたいなので
それを別スレッドからやるのは難しそうです。
なんとかSwitchToFiberを他のスレッドからやらせられないでしょうか。
150デフォルトの名無しさん:2012/07/19(木) 13:46:38.37
数秒制御が返ってこない関数の最中にWndProcを処理したい という主な理由は?

WndProcを処理しなければならないスレッド中に
数秒制御が返ってこない関数(Dialog以外)を含ませるのは設計が微妙なキガス
151デフォルトの名無しさん:2012/07/19(木) 14:10:23.77
他からやりたい…って何のためのファイバーなんだろう…
まじめにスレッド化した方がいいんじゃないの?
152デフォルトの名無しさん:2012/07/19(木) 14:29:25.57
>>149
数秒制御が返ってこない関数を別スレッドで動かせない?
普通はそうするんだけど。
"処理中"ダイアログを出したり、キャンセルや一時停止出来るようにするために
153142:2012/07/20(金) 13:05:05.84
情報後出しで申し訳ありませんが、実はVB6なんです。
(VBスレで盛り上がってる者ではないです)
数秒制御が返ってこない関数はいじれません。
別スレッドで試しましたが、落ちてしまいました。

一応見つけました。
http://www.gamedev.net/topic/590162-how-to-switch-fibre-from-a-thread/
敷居高いですが、この方法しかないようであれば、がんばってみます。
SetTimerやQueueUserAPCに割り込ませる方法も、引き続き募集中です。
154デフォルトの名無しさん:2012/07/20(金) 16:05:13.52
スタック、コンテキストスイッチ、スレッドローカルなどをちゃんと分かってやってるならいいが・・・
数々の地雷を埋め込んだプログラムになりそうな予感がする
155デフォルトの名無しさん:2012/07/20(金) 18:13:23.80
別スレッドのメッセージキューの中身って奪えるんだろうか?
スレッド(キュー)指定可能なGetMessageでも無いとWndProcの処理は出来ないと思うけど
156デフォルトの名無しさん:2012/07/20(金) 18:17:07.50
むしろ別スレッドでUIスレッドを動かす
157デフォルトの名無しさん:2012/07/20(金) 20:42:33.86
C/C++に微塵も関係ないから余所でやれ
158デフォルトの名無しさん:2012/07/22(日) 02:49:28.85
「別スレッドで試しましたが、落ちてしまいました。」
を直すほうがずっとまともな解決策だと思う。
159デフォルトの名無しさん:2012/07/22(日) 23:09:44.74
VECTORから一つだけ抜き出すことって出来ませんか?
そのままintやfloatに入れようとするとやっぱりエラー…
160デフォルトの名無しさん:2012/07/22(日) 23:21:49.46
日本語かコードで書いてくれ
161デフォルトの名無しさん:2012/07/22(日) 23:21:56.60
int const bar[] = {1, 3, 4};
std::vector<int>foo = bar;
int hage = * foo.begin();
int hoge = foo.at(1);
何がどうエラーだといいたいのだろう……
162デフォルトの名無しさん:2012/07/22(日) 23:25:33.71
>>161 エラーメッセージ読めよ
163デフォルトの名無しさん:2012/07/22(日) 23:43:09.80
そもそも
>std::vector<int>foo = bar;
この時点でコンパイルエラーだろう
164デフォルトの名無しさん:2012/07/23(月) 01:52:57.58
あーすまん、サンプル書こうとして間違えた。
std::vector<int> foo(bar, bar + 3);
で。
165デフォルトの名無しさん:2012/07/23(月) 02:04:13.65
ttp://ideone.com/GWAre
特に何もないけど
本当にそこでエラーが出るのか?
てかエラーの内容を書けよ
166デフォルトの名無しさん:2012/07/23(月) 03:33:35.36
161=164だろ。
167デフォルトの名無しさん:2012/07/23(月) 10:47:01.30
C++11の規格票を読みながらvectorの初期化を書いてみた
いろんな意味でC++11は気持ち悪いけど使っているうちによく改良されていると思えてきた

#include <vector>
#include <iostream>
#include <iterator>

int main()
{
std::vector<double> d = {1.0, 2.0, 3.0};
for (double& x : d)
std::cout << x << ' ';
std::cout << std::endl;

std::initializer_list<int> il = {4, 5, 6};
std::vector<int> i(il);
for (int& x : i)
std::cout << x << ' ';
std::cout << std::endl;
}
168デフォルトの名無しさん:2012/07/23(月) 11:18:26.74
順調に>>167の洗脳は進んでいるようだな・・・
169デフォルトの名無しさん:2012/07/23(月) 11:38:34.47
うはっ、for_each()を使うためだけに関数にしなくていいのか。
と思ってしまった私も最早……
170デフォルトの名無しさん:2012/07/23(月) 11:45:59.87
もはやostream_iteratorの出番が無くなってくるな・・・
171デフォルトの名無しさん:2012/07/23(月) 16:14:12.01
実数の乱数を生成したいのですが、
doubleで表現可能なすべての実数を生成するアルゴリズムを教えてください。
172デフォルトの名無しさん:2012/07/23(月) 16:27:46.15
バイト列を無理やりdoubleにキャストして、それが
doubleとして有効かどうかを判定する方法を教えて
173デフォルトの名無しさん:2012/07/23(月) 16:33:34.12
isnanとかisinfとか必要に応じて
http://ja.wikipedia.org/wiki/IEEE_754
174デフォルトの名無しさん:2012/07/23(月) 16:36:23.78
fpclassify() に相当するのを探す
175デフォルトの名無しさん:2012/07/23(月) 23:23:54.34
>>172
でもそれって一様乱数じゃないよね
176デフォルトの名無しさん:2012/07/24(火) 08:53:37.61
メルセンヌ・ツイスタは結構いい線行っているな
でも「doubleで表現可能なすべての実数を生成」するほど周期が長い擬似乱数発生器
なんてないんじゃないか?
177デフォルトの名無しさん:2012/07/24(火) 09:38:27.61
>>175
一様乱数なバイト列ならdouble表現にしても
符号部,仮数部,指数部どれも一様になる気がするけどならないの?
178デフォルトの名無しさん:2012/07/24(火) 09:42:12.10
>>177
そもそも全doubleが一様分布じゃないでしょ
179デフォルトの名無しさん:2012/07/24(火) 09:44:10.23
64bitの乱数ならメルセンヌ二回回せばいんちゃう?
周期は半分になるけど大差ないでしょ
180デフォルトの名無しさん:2012/07/24(火) 09:46:19.44
そもそもdoubleの乱数ってどうすれば一様になるのかわからん
指数部と仮数部をランダムにするだけでいいの?
181デフォルトの名無しさん:2012/07/24(火) 09:52:40.50
>>178
どういうこと?
上で出てるisnan,isinfや-0を除外する話でなく?
182デフォルトの名無しさん:2012/07/24(火) 09:58:37.06
>>181
小さな数は密で大きな数は粗
183デフォルトの名無しさん:2012/07/24(火) 10:04:02.03
>>181
(-1)^s * 2^e * (1 + m/2^N)
指数部eが一つ増えると仮数部mが一つ増えた時の実数としての増え方が二倍違ってくる

要は指数部があるから一様にはなっていない
>>182の通り
184デフォルトの名無しさん:2012/07/24(火) 10:05:56.92
>>182
指数部が一様なら変わらないんじゃないの?
有効桁数が一様かどうかに関わってくるとは思えないけど
185デフォルトの名無しさん:2012/07/24(火) 10:12:09.74
考え方としては
1~10を1024等分して、10~100も1024等分して、100~1000も1024等分して・・・
186デフォルトの名無しさん:2012/07/24(火) 10:14:15.91
対数グラフの目盛りをイメージしてもいい
187デフォルトの名無しさん:2012/07/24(火) 10:16:03.83
>>183
だから、それがdoubleでの一様になるんじゃないの?
188デフォルトの名無しさん:2012/07/24(火) 10:16:29.11
>>187
そうか、ならばもう何も言うまい
189デフォルトの名無しさん:2012/07/24(火) 10:16:55.68
>>180
double用のメルセンヌ・ツイスタがあるよ
でも全部の表現を出すのは無理だろう

http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/MTGP/index-jp.html
190デフォルトの名無しさん:2012/07/24(火) 10:34:07.19
doubleで表現可能な値(集合)の中で一様分布なら>>172で良く
double下限〜double上限の範囲内の実数(double表現不可含む)の中で
一様分布なら>>182-183の言う通り>>172では駄目

ってことだな
191デフォルトの名無しさん:2012/07/24(火) 11:12:15.12
doubleが表現できる範囲での一様分布なんて無理だろ
192デフォルトの名無しさん:2012/07/24(火) 12:20:43.75
0から1なら?
193デフォルトの名無しさん:2012/07/24(火) 12:51:59.68
>>192
固定小数点数として乱数を求めればOK。
194デフォルトの名無しさん:2012/07/24(火) 14:19:02.99
>>191
doubleが表現できる範囲=doubleの全ビットパターン なら可能だろ
195デフォルトの名無しさん:2012/07/24(火) 14:22:41.76
>>194
それは一様じゃねー、って言ったばっかだろ
196デフォルトの名無しさん:2012/07/24(火) 14:23:54.35
>>191>>194
>190を理解できていないのか?
197デフォルトの名無しさん:2012/07/24(火) 14:28:19.84
>>195
ビットパターンに対する一様と実数に対する一様を混同すんな
198デフォルトの名無しさん:2012/07/24(火) 14:45:57.41
>>197
最初からそう言ってるだろ
199デフォルトの名無しさん:2012/07/24(火) 15:07:50.03
>>198
最初ってどれだよ
「doubleが表現できる範囲」なんていう曖昧なレスのことか?
200デフォルトの名無しさん:2012/07/24(火) 15:10:32.65
0〜1.7976931348623158E+308の実数から、
乱数を生成してdoubleで返す関数ってこんな感じ?
何かすごく大きい数ばかりになる気が。
http://ideone.com/A5qYy
201デフォルトの名無しさん:2012/07/24(火) 16:05:38.00
なんでこんなに話が通じないんだろう……><
202デフォルトの名無しさん:2012/07/24(火) 16:15:37.96
お前が馬鹿だから
203デフォルトの名無しさん:2012/07/24(火) 16:22:35.72
doubleが表現できる範囲が等間隔ではない

欲しい乱数の分布が 等間隔でない上の集合で一様であってほしいのか
0〜DBL_MAX の連続した実数区画で (double が表現できない箇所を含む)一様であってほしいのか
204デフォルトの名無しさん:2012/07/24(火) 16:39:36.23
>>203
そういう話だろうね
205デフォルトの名無しさん:2012/07/24(火) 16:40:58.19
>>171次第だな、後者の可能性が高いとは思うけど
区別して話さないとワケワカメ

>>200
99%が1.79E+306以上になるわけだし
206デフォルトの名無しさん:2012/07/24(火) 16:47:57.91
浮動小数点って数字でかいほうが密度薄いんだっけ?
207デフォルトの名無しさん:2012/07/24(火) 17:39:24.99
頼むから、じっくり考えるか諦めるかしてくれ。
208デフォルトの名無しさん:2012/07/24(火) 22:07:56.92
指数固定で仮数だけ乱数にするくらいじゃないと意味ないぜ
209デフォルトの名無しさん:2012/07/24(火) 23:24:30.38
char **ptrr;
char ***ptrrr;
ptrrrr = &ptrr;
した場合、
*ptrrrはptrrのアドレスですよね。
210デフォルトの名無しさん:2012/07/24(火) 23:42:45.48
typedef char** charH
とかすれば
charH ptrr;
charH* ptrrr;
ptrrr = &ptrr;
*ptrrr:ptrrの値
211デフォルトの名無しさん:2012/07/25(水) 01:12:26.63
>>209
ptrrrがptrrのアドレス
*ptrrrはptrrへの参照であり
*ptrrrとptrrはほぼ同じものとして使える
212200:2012/07/25(水) 10:17:43.86
>>203
両方書いてみた。乱数品質はとりあえず無視してるけど。
http://ideone.com/WJ9i3
213203:2012/07/25(水) 20:01:56.53
俺が後者で想定してたのは 密度に応じた頻度をしめす乱数

例:
理想上での 1〜99 の一様乱数Aを
非等間隔の数列B { 1,2,3,4,5,6,7,8,9, 10,20,30,40,50,60,70,80,90 }
に写すことを考える 

(A:10〜19 を B:10 へ)
{ 10,20,30,40,50,60,70,80,90 } のほうが { 1,2,3,4,5,6,7,8,9 } より出現頻度多くならないといけないのでは?

これが double の数値世界でも、おきないといけないんじゃない? ということです
214デフォルトの名無しさん:2012/07/25(水) 20:44:40.28
平衡二分木(できればAVL木)が必然になるような簡単なアルゴリズムの問題ってありますか?
初期入力値がよくない(1,2,3,4,...)とかしか思いつかないのですが、それがわかってれば
AVL木とかを実装しなくても普通の木でinsertの際にばらけさせるとかすると回避出来るし、
あとは人工的な問題なら思いつくのですが、自然なやつを思いつけません。
どうかお願いします。
215デフォルトの名無しさん:2012/07/25(水) 21:12:47.53
>>214
挿入だけだったらそうかもしれないが、削除があったらまず無理
それに挿入の時に掛かるコストが平衡木を作るのと同じくらい掛かるようだったら
無意味
216216:2012/07/25(水) 21:33:30.39
#include <vector>
int map_one[10][10] = {
//中身は0,1,2のどれかが10×10
}
int map_two[10][10] = {
//中身は0,1,2のどれかが10×10
}
int map_three[10][10] = {
//中身は0,1,2のどれかが10×10
}
std::vector<int> StageList;
int StageId = 0 //0,1,2のどれか
StageList.push_back(map_one[10][10]);
StageList.push_back(map_two[10][10]);
StageList.push_back(map_three[10][10]);
217216:2012/07/25(水) 21:34:14.69
for(int j = 0; j<10; j++){
for(int i = 0; i<10; i++){
switch(stageList[StageId][j][i]){ //ここでエラー
case 0: //床
//ここに描画関数
break;
case 1: //壁
//ここに描画関数
break;
case 2: //セット床
//ここに描画関数
break;
}
}
}
vector内にある3つの二次元配列をStageIdの値でアクセスして処理を行いたいのですが
書き方がよくわかりません。どのように書けばよいのでしょうか?
windowsXP SP3
VC++2008
おねがいします。
218デフォルトの名無しさん:2012/07/25(水) 21:38:58.88
>>217
std::vector<int> StageList;
int StageId = 0 //0,1,2のどれか
StageList.push_back(map_one[10][10]);

これコンパイル通った?
219デフォルトの名無しさん:2012/07/25(水) 21:39:51.33
ああ通るのか

でもmap_one[9][9]までだろ
変なところをアクセスしてるぞ
220デフォルトの名無しさん:2012/07/26(木) 01:00:48.24
>>216,217
そのソースどおりだと 's'tageList なんて変数はないよ、ってエラーのはずだが
そこはスルーなら

std::vector<int (*)[10]> StageList;
StageList.push_back(map_one);
221デフォルトの名無しさん:2012/07/26(木) 02:08:15.11
>>220
それだと配列そのものがpushされるのではなく、配列へのポインタがpushされるわけだよね
もちろん3次元配列のようにして書けるけど、もし配列の中身ごとpushしようとしたら
配列をクラスで包み、コピーコンストラクタを書かなければならない

そしてクラスにしてしまうと配列演算子がまともに働かなくなってしまうので、プロキシクラス
を使って仮想的にメンバの多次元配列にアクセスさせる事になる

なんかスマートじゃないよね
C++11のarrayならうまく行くのかな?ヘッダファイルを見てみたら既にプロキシクラスが書かれて
いるし、arrayはコンテナとしての要件を満たしているのでコピーコンストラクタも備えられている
これならpush出来る

多分相手がクラスだとムーブコンストラクタは働かないだろう
222デフォルトの名無しさん:2012/07/26(木) 02:28:24.38
03だと初期化がめんどくさいがvector< vector< vector<int> > >使っとけ
223デフォルトの名無しさん:2012/07/26(木) 09:47:22.49
>>214
追加,削除,範囲検索(x〜yの期間,zzの文字で始まる,等)を何度も行う場合
索引とか?
224デフォルトの名無しさん:2012/07/26(木) 12:01:02.47
C++11だと配列(std::arrayだけど)毎コピー出来るね
おそらく一時オブジェクトだと勝手にムーブコンストラクタを使ってくれるだろう

const int ROW = 10, COLUMN = 20;
template <std::size_t ROW, std::size_t COLUMN>
using A = std::array<std::array<int, COLUMN>, ROW>;

int main()
{

A<ROW, COLUMN> a1;
std::vector<A<ROW, COLUMN>> v;

a1[1][19] = 123;

v.push_back(a1);

std::cout << a1[1][19] << std::endl;
std::cout << v[0].at(1).at(19) << std::endl; // ROWとCOLUMNの順番が正しいか確認

a1[1][19] = 456;

std::cout << a1[1][19] << std::endl;
std::cout << v[0][1][19] << std::endl;
}
225デフォルトの名無しさん:2012/07/26(木) 15:23:31.55
戻り値を引数でもらうとき、
出力は頭のほうにする?ケツのほうにする?

bool getUnko( int *output, int input );
bool getUnko( int input, int *output );

おれは頭の方がいいと思う。なんとなく。
226デフォルトの名無しさん:2012/07/26(木) 15:34:29.21
read(int fd, void *buf, size_t count);
stat(const char *path, struct stat *buf);

ケツ
227デフォルトの名無しさん:2012/07/26(木) 15:46:29.67
void func(ProjStat & stat, ProjValue const & value);
あ、頭だ。
228デフォルトの名無しさん:2012/07/26(木) 16:06:35.27
memcpy(output, input, size); のように先頭におく

func(output, input1, input2, .... ) input1, input2, .... を使って output を作るよ

(C言語で)ハンドル+操作関数の場合は ハンドルは頭に置きたいけど
229デフォルトの名無しさん:2012/07/26(木) 16:20:12.12
よし、じゃあ
頭の方にoutputがあるニコチャン大王方式にするわ
230216:2012/07/26(木) 18:52:21.45
回答ありがとうございます。
とりあえずvector自体まだよくわかってないみたいなので
参考にしながら色々試します。

ありがとうございました。
231デフォルトの名無しさん:2012/07/26(木) 23:12:41.63
case文のインデントを半タブに出来るindentはありますか?
gnu indentやastyleでは出来ませんでした
232デフォルトの名無しさん:2012/07/27(金) 02:08:49.46
>半タブ
イミフ
233142:2012/07/27(金) 10:22:14.77
以前、QueueUserAPCかSetTimerかFiberを
他のスレッドから切り替えさせられないか質問した者です。

SuspendThreadとSetThreadContextでeipを書き換えて、
別の行に飛ばすことによって、SleepExやSwitchToFiberを
実行することに成功しました。

@SetThreadContextでeipを書き換えても、その行に飛ばないことがある。
 「SuspendThreadはカーネルモードを止められない」
 「Get/SetThreadContextはカーネルモードのレジスタを扱えない」ことが
 原因のようで、カーネルモードであるかどうかを判定する方法を
 知りたいです。
A実行したい関数やファイバ情報などをecxなどに入れても
 ResumeThread直後に違う値に書き換わっていることがある。
234デフォルトの名無しさん:2012/07/27(金) 11:29:03.18
それもう、板のローカルルールに抵触するだろ。
235デフォルトの名無しさん:2012/07/27(金) 12:42:24.86
>>232
半タブってのは、半分のタブという意味です。
236デフォルトの名無しさん:2012/07/27(金) 13:00:40.22
そんな言葉一体どこで覚えてきたんだい?
エディタの機能とかじゃないのか?
237デフォルトの名無しさん:2012/07/27(金) 13:05:03.61
じゃあ半インデントでいいよ
238デフォルトの名無しさん:2012/07/27(金) 14:47:58.48
ポッキーの半分みたいなこと言うなよ
239デフォルトの名無しさん:2012/07/27(金) 15:13:35.79
switch(a){
 case 1:
  printf("hello\n");
  break;
}
if(a==1){
  printf("hello\n");
}

こういうやつ
240デフォルトの名無しさん:2012/07/27(金) 15:18:27.44
スペース二回おせやハゲ
241デフォルトの名無しさん:2012/07/27(金) 18:25:12.93
なんちゅーコードだ
242デフォルトの名無しさん:2012/07/28(土) 16:58:25.87
caseは右?左?
243デフォルトの名無しさん:2012/07/28(土) 21:08:25.74
ローカルのINIファイルから取得したデータを、自作のクラスのメンバ変数に入れたいのですが、
良い方法が思いつかなくて困っています。 教えてください。

↓の用になっているINIファイルのデータを使用する
[test] //セクション名
x = 100
y = 200
no = 1

INIから取得したデータを↓のクラスに設定する
class TEST{
public:
int x;
int y;
int y;

TEST(); //INIから情報を取得してメンバに設定する
};
244デフォルトの名無しさん:2012/07/28(土) 21:10:12.00
GetPrivateProfileInt
245デフォルトの名無しさん:2012/07/28(土) 21:14:52.39
>>243
boost::property_tree
246デフォルトの名無しさん:2012/07/28(土) 21:21:09.17
ごめんなさい。
ぜんぜん違うことを書いていました(汗)。
INIの中身は243のような形ではなく、↓のようになります。

[test]
val = [111,222,1][333,444,2][555,666,3]

val部分の[ ]の中身を取り出しクラスに設定する。
中身の意味は[x,y,no]となり、243で記述したクラスのメンバと対応しています。

なぜ[]が複数あるかというと
クラスの配列を作って使用するためです。
左からクラス1、クラス2、クラス3に設定するデータとなります。

このデータを切り出してクラスに設定する方法を教えてください。
お願いします。
247デフォルトの名無しさん:2012/07/28(土) 21:24:36.12
それぐらい自前でパースしろ
strtokとか知らんのか
248デフォルトの名無しさん:2012/07/28(土) 21:30:23.20
ステートマシンでやるんだよそういうのは
249デフォルトの名無しさん:2012/07/28(土) 21:30:42.52
性器表現
250デフォルトの名無しさん:2012/07/28(土) 21:30:46.62
>>247
GetPrivateProfileStringでChar*変数にデータを取得して、
strtocで切り分けようとしましたが、
ポインタの内容が書き換わってしまうためうまくいきませんでした。

なので、うまい事結果が出てくれる方法を探しています。
251デフォルトの名無しさん:2012/07/28(土) 21:35:54.88
strtokくらい自前で使いやすいの用意しとけよ
252デフォルトの名無しさん:2012/07/28(土) 21:38:31.46
ポインタの内容が書き換わるからうまくいかないの意味が分からない
253デフォルトの名無しさん:2012/07/28(土) 21:40:58.31
[] で切り出し @strtok →別のバッファに複写
別のバッファを , で切り出し @strtok →各要素へ
254デフォルトの名無しさん:2012/07/28(土) 21:44:55.65
今時の学生ってこんな事も出来ないの?
255デフォルトの名無しさん:2012/07/28(土) 21:49:45.83
前後に固定の文字列を付けてC++なコードに変換
→コンパイラを子プロセスで呼び出してDLLを作らせる
→LoadLibrary
→値取り出す
→FreeLibrary
→ファイル削除
256デフォルトの名無しさん:2012/07/28(土) 22:26:10.31
テキストデータの処理ぐらい頑張ってやれよ……
iniってことは使用者に弄らせることが前提なのかい?
弄らせる気ならどうぞお好きなようにだけど、
そうでなきゃ例えば[]の数とかも
冒頭に書いておいておけばずっと楽じゃん……
257デフォルトの名無しさん:2012/07/29(日) 12:42:05.78
>>256
頑張って教えてやれよ・・・
258デフォルトの名無しさん:2012/07/29(日) 12:53:18.19
だから解析用のステートマシン作ってストリームぶち込めばいいじゃん
259デフォルトの名無しさん:2012/07/29(日) 15:50:08.03
WindowsAPIが使える環境なら、素直に使っちゃうのが一番楽なのかな
260デフォルトの名無しさん:2012/07/29(日) 16:11:59.42
>>259
Windows環境ならそれでいーんじゃねーの?
(ただしそれ以外の手段の方が楽だって可能性もある)
261デフォルトの名無しさん:2012/07/29(日) 16:27:37.96
ブーストでええやん
262デフォルトの名無しさん:2012/07/29(日) 20:09:38.40
大昔にWin APIで書かれたソースがあって、書き直したほうがいいんだろうなあと思いつつ、完全に放置されている…
263デフォルトの名無しさん:2012/07/29(日) 20:42:53.73
休憩時間で書き直せや
ったく、気の利かん社畜やな〜
264デフォルトの名無しさん:2012/07/30(月) 00:12:49.21
ここはBoost.Spiritでいろいろbooooooooooost!!!な世界へ踏み込むべし
ttp://ideone.com/eiSC5
265sage:2012/07/30(月) 09:52:57.28
vectorの中に重複した要素があるときに、そのなかで1個だけ消すやり方を教えてください。
vector<int> v;
v.push_back(1);
v.push_back(1);
v.push_back(1);
こんな感じで1が3個入ってるときに、1個だけ削除したい。
int rem = 1;
remove(v.begin(), find(v.begin(), v.end(), remove) + 1, rem);
でいけるかと思ったけど、1個も消えません。
STLややこしすぎ。。。
266sage:2012/07/30(月) 09:54:33.43
すいません書き間違い
remove(v.begin(), find(v.begin(), v.end(), rem) + 1, rem);
267sage:2012/07/30(月) 09:59:31.39
v.erase(find(v.begin(), v.end(), rem));
で削除できました。何でこんな風になってんだろ
268デフォルトの名無しさん:2012/07/30(月) 10:05:18.06
>>265
v.erase(v.begin());
269デフォルトの名無しさん:2012/07/30(月) 10:18:37.54
とりあえず、remove したら erase しろよ
270デフォルトの名無しさん:2012/07/30(月) 10:46:17.85
>>267 std::removeが配列にも適用可能なように。
271デフォルトの名無しさん:2012/07/30(月) 11:19:00.53
findじゃなくてuniqueにしろよ
272デフォルトの名無しさん:2012/07/30(月) 12:12:51.55
> 何でこんな風になってんだろ
アルゴリズムにできるのはイテレータの操作だけでコンテナの操作はできないから
273デフォルトの名無しさん:2012/07/30(月) 15:06:06.20
後から配列ごと変更出来るように、ポインタ配列のポインタを使用したプログラムを作ってます。

class A{
....
}

A* cls[10];

A** pcls;

この時のclsは10要素持っていますが、プログラム中でそれは増えていく予定で、
現在の要素数を数えるために sizeof を使おうと思っています。

要素数 = sizeof(cls[0]) / sizeof(cls);

これはうまくいくのですが、pcls を使用すると、そもそもそのA**のサイズが帰ってきてしまい、要素数がわかりません。
pclsを使用して、要素数を知ることはできませんか?

要素数にならない = sizeof(pcls[0]) / sizeof(pcls);
274デフォルトの名無しさん:2012/07/30(月) 15:09:33.57
>>273
std::vectorかboost::ptr_vectorに入れろよ
ポインタに入れたら数が増減しても自分で管理しないと
分かるわけない
275デフォルトの名無しさん:2012/07/30(月) 15:18:43.37
>>273
配列のサイズはプログラマが管理する
別の整数変数にサイズをメモしておこう
そして勉強中ならともかく普通はvecterを使うよ
276デフォルトの名無しさん:2012/08/02(木) 15:10:59.31
LinuxのC++でunistd.hを使いたいんだけど
<cstdlib> みたいな指定ってどうやんの?
277デフォルトの名無しさん:2012/08/02(木) 16:08:20.69
負の数の試射五入ってどうやってやるの?
278デフォルトの名無しさん:2012/08/02(木) 16:11:56.26
>>276
C++標準ではないインクルードファイルはそのまま使えばよろし。

>>277
四捨五入にも二種類あるので、どのタイプの四捨五入を行いたいかはっきりさせるのが第一歩。
それが負の数に対しても拡張できるか、拡張するとしたらどうするべきかをはっきりさせるのがその次。
279デフォルトの名無しさん:2012/08/02(木) 16:13:42.58
>>278
二種類ってなんだよ
280デフォルトの名無しさん:2012/08/02(木) 16:29:25.38
普通の四捨五入と銀行屋の四捨五入。
後者はJIS丸めとも言う。
281デフォルトの名無しさん:2012/08/02(木) 16:37:39.43
>>277
Wikipediaでも見ながら実装考えるべきじゃないかな
ceil,floorそのままじゃダメな場合とか普通にあるし
ちなみに>>280の「銀行屋の四捨五入」とは実質五捨五入のこと。詳しくはググれ
282デフォルトの名無しさん:2012/08/02(木) 20:04:23.80
>>278
ありがとう。
C++はなにが標準かよくわかんないよな。一覧とかないし。
283デフォルトの名無しさん:2012/08/02(木) 20:08:52.31
あるだろ一覧ぐらい
284デフォルトの名無しさん:2012/08/02(木) 20:12:34.29
cstdlib はそのまま cstdlib というファイル名のヘッダファイル(拡張子はない)
特別な指定をしているわけではない
285デフォルトの名無しさん:2012/08/02(木) 20:42:18.99
>>283
ならば 今すぐ愚民ども全てに叡智を授けてみせろ!
286デフォルトの名無しさん:2012/08/02(木) 20:57:46.49
>>285
ほしけりゃさがして来い。そこにCPPの全てを置いてきた(ドンッ)
287デフォルトの名無しさん:2012/08/02(木) 21:05:04.29
四捨五入って少なくとも3種類あるだろ

1, 正の無限方向に倒す
2. 負の無限方向に倒す
3. 0を境に正の無限、負の無限方向に倒す

幾何系だと3を使うことが割と多い
288デフォルトの名無しさん:2012/08/02(木) 21:08:45.51
>>287
絶対値をとって丸めた後、元の負号を復活 ですかな <3番目
289デフォルトの名無しさん:2012/08/02(木) 21:39:32.49
>>287
2はねーよ。1.5が1になるのは四捨五入じゃねーわ。
290デフォルトの名無しさん:2012/08/03(金) 01:12:21.06
>>287
3だけ普通の四捨五入な気がする
1.5→2、2.1→2、-1.5→-2、-2.1→-2
つまりfabsして0.5足してからint型にキャストして符号戻せばいいんじゃ……
291デフォルトの名無しさん:2012/08/03(金) 02:35:49.36
flooar()とceil()って関数もわざわざ用意されてるしな
292デフォルトの名無しさん:2012/08/03(金) 02:38:27.84
>>281
偶数丸め自体は知ってたが、五捨五入って言い方もあるのね。勉強になった。
293デフォルトの名無しさん:2012/08/03(金) 05:54:01.55
切り上げで0.01が1になるなんて聞いたことない
+0.9して切り捨てたら0だろ

とかいうやつが後を絶たないのはなんとかなりませんか
294デフォルトの名無しさん:2012/08/03(金) 09:49:38.88
少なくとも俺は見たことないぞ、そんなやつ
295デフォルトの名無しさん:2012/08/03(金) 17:14:09.15
struct bird {
struct egg {
int number;
egg(int num) : number(num) {};
};
egg* lay(int num);
};
egg* bird::lay(int num) {
egg* o = new egg(num);
return o;
}
int main()
{
bird b;
return 0;
}
これをコンパイルすると以下のエラーがでます。構造体の中で定義するとコンパイル通るのですが、
外に出すとだめです。どうすれば外で定義できますか?
test.cpp:8: error: expected constructor, destructor, or type conversion before '*' token

296デフォルトの名無しさん:2012/08/03(金) 17:23:44.36
bird::egg* bird::lay(int num) {

とか。試してないけど。
297デフォルトの名無しさん:2012/08/03(金) 17:28:19.32
すいません、それでコンパイルできたんですが、実は元のコードはテンプレートになってて、
テンプレートだと上手くいきません。(後出しとか言わないで、、、)
template <class T>
struct bird {
struct egg {
T number;
egg(T num) : number(num) {};
};
egg* lay(T num);
};
template <class T>
bird<T>::egg* bird<T>::lay(T num) {
egg* o = new egg(num);
return o;
}
int main()
{
bird<int> b;
return 0;
}
298デフォルトの名無しさん:2012/08/03(金) 17:42:31.36
typename を足せばいいんじゃね
template <class T>
typename bird<T>::egg* bird<T>::lay(T num)
{
}
299デフォルトの名無しさん:2012/08/03(金) 17:47:13.88
すげえ、、、なんでか分からないけどコンパイル通りました。
ありがとうございました。
300デフォルトの名無しさん:2012/08/03(金) 17:56:29.13
分かりました。
bird::egg(::が中に入っているやつ)が、型名なのか変数なのかコンパイラは分からないからですね。
301デフォルトの名無しさん:2012/08/04(土) 17:53:18.13
sqlite3のC++用のおしゃれなインターフェースってある?
302デフォルトの名無しさん:2012/08/04(土) 18:19:37.93
自分自身の実行ファイルのパスを表示したいんだけど
Linuxじゃ無理かな
303デフォルトの名無しさん:2012/08/04(土) 18:22:16.74
わかった、whichをpopenすればいいのか
304デフォルトの名無しさん:2012/08/04(土) 21:05:12.19
実行ファイル自体が既に無くなってたりすることさえあるんだぜい。
305デフォルトの名無しさん:2012/08/04(土) 22:27:30.97
>>304
どうしてそんないじわるを!
どうしたらいいのか・・・
306デフォルトの名無しさん:2012/08/04(土) 22:48:27.89
いつから自分が実行ファイルだと錯覚していた?
307デフォルトの名無しさん:2012/08/05(日) 01:45:00.59
>>302
arg[0] じゃだめなの?
308デフォルトの名無しさん:2012/08/05(日) 01:53:55.69
>>307
./a.out 見ていったい何わかると言うのか
思い出のほかに何が残るというのか
309デフォルトの名無しさん:2012/08/05(日) 04:26:09.40
同一のクラス中で同名の変数と関数を宣言したらコンパイルエラーが出て、どうやら衝突してるみたいなんですが、
これって仕様なんですか?
また、変数、関数を別名にする以外の対処法があったら教えて下さい。

例:
class test {
int hoge;
public:
int hoge();
};
310デフォルトの名無しさん:2012/08/05(日) 04:52:20.30
仕様です
311デフォルトの名無しさん:2012/08/05(日) 09:16:23.15
>>309
そんなもんCですら重複したらエラー吐くってのに……

#include <stdio.h>
int hoge=3;
int hoge(void) {
  return 42;
}
int main() {
  printf("%d",hoge());
return 0;
}
312デフォルトの名無しさん:2012/08/05(日) 09:42:42.33
int hoge;
void hoge(){}

int main(){
int i = hoge;
void (*p)() = hoge;

return 0;
}
313デフォルトの名無しさん:2012/08/05(日) 11:02:47.50
>>311
まじですか・・・
C言語結構やってたのに全然知らなかった。 恥ずかしい・・

けどなんか納得いかない。 変数名と関数名が被っちゃいけないなんて。
314デフォルトの名無しさん:2012/08/05(日) 11:07:33.87
int hoge(void); /*関数*/ と int (*hoge)(void); /*変数*/ があったとして、
hoge()はどっちを使えというのだい?
315デフォルトの名無しさん:2012/08/05(日) 11:12:21.36
関数ポインタを知らないと理解出来ないだろ。
多分、>>313>>312>>314も理解出来て無いと思われる。
316デフォルトの名無しさん:2012/08/05(日) 11:18:36.43
関数ポインタの使用例

#include <stdio.h>
void hoge1()
{
puts("hogehoge");
}
void hoge2()
{
puts("hoge×2");
}

int main(){
void (*p)() = hoge1;
p();
p = hoge2;
p();

return 0;
}
317デフォルトの名無しさん:2012/08/05(日) 11:35:19.89
すいません関数ポインタは分かるんですけど>>314の意味がいまいちわかりません。
318デフォルトの名無しさん:2012/08/05(日) 11:40:05.52
関数ポインタわかってねーじゃねーか!
319デフォルトの名無しさん:2012/08/05(日) 11:42:14.24
関数を定数として処理してるんだよ、C言語では。
型定義で関数も変数もみんな同列で扱える仕様だからな。
まあ、そこまで使いこなす必要は、あまり無いかもしれんけど。
320デフォルトの名無しさん:2012/08/05(日) 11:50:02.89
#include <stdio.h>
void hoge1()
{
puts("hoge");
}

void hoge2()
{
puts("hogehoge");
}

int main(array<System::String ^> ^args)
{
void (*p[])() = {hoge1,hoge2};
p[0]();
p[1]();

return 0;
}
321デフォルトの名無しさん:2012/08/05(日) 11:52:33.49
>>320
間違えた。
×>int main(array<System::String ^> ^args){
○>int main(){
というか、今、.netの勉強中だったからなぁ・・・・
322デフォルトの名無しさん:2012/08/05(日) 11:52:59.81
int hoge1,hoge2(void),(*hoge3)(void) = hoge2;
323デフォルトの名無しさん:2012/08/05(日) 11:54:48.65
C++理解してないのにC++/CLIに手出すなよ
セスナ乗ったことすら無いのに戦闘機乗ろうとしてるようなもんだぞ
324デフォルトの名無しさん:2012/08/05(日) 11:59:40.26
例えがおかしいな

セスナとモーターボートほど無関係だろ
共通点はエンジンで動くという点だけ

この例えもおかしいけど
325デフォルトの名無しさん:2012/08/05(日) 12:06:43.64
そうか?C++/CLIはC++の上位互換だろ
一部のキーワードがかぶらない限りはC++のコードをそのまま使える
326デフォルトの名無しさん:2012/08/05(日) 12:16:41.70
#include <stdio.h>
#include <string.h>
#include <conio.h>

using namespace System;

void hoge1()
{
puts("hoge");
}

void hoge2()
{
puts("hogehoge");
}

int main()
{
void (*p1[])() = {hoge1,hoge2},(*p2[2])();
int p3[2];
memcpy(p3,p1,sizeof(p3));
printf("%d,%d\n",p3[0],p3[1]);
memcpy(p2,p3,sizeof(p3));
p2[0]();
p2[1]();

return 0;
}
327 ◆QZaw55cn4c :2012/08/05(日) 12:27:49.85
>>313
変数と関数の名前空間が同一なのは、C ならばある程度説明がつくかも。
>>312
http://codepad.org/WUGSXc8Z
変数hoge も関数 hoge() も extern。したがってオブジェクトとしての属性のひとつにアドレスを持つ。
同じアドレスで違うものは確保できないからエラーになる。
じゃあ片方を static にすれば大丈夫か?というと、大丈夫ではなくてやっぱりエラーなんだけれども。

こういうのは名前空間が違うからOKらしい。
328 ◆QZaw55cn4c :2012/08/05(日) 12:29:02.08
329デフォルトの名無しさん:2012/08/05(日) 12:47:48.39
>>326
p1に入ってる関数ポインタを、p2に入れて変数としてアドレスを表示し、
さらにp2の内容をp3の関数ポインタに入れ直して関数ポインタとして実行。
これが何故正常に動くのかは素人には分からんだろうな。
330デフォルトの名無しさん:2012/08/05(日) 12:50:51.91
>>329
p2とp3が逆だったw
331デフォルトの名無しさん:2012/08/05(日) 13:28:27.32
>>329
int型とポインタが同じメモリーサイズだという常識から説明しないと分からんだろ。
16ビットの頃のsizeof(int)は2だし、64ビットでコンパイルするとsizeof(int)は8になる。
332309:2012/08/05(日) 13:43:33.14
#include <stdio.h>

int hoge() {}
int hoge;

int main(void)
{
return 0;
}

これでエラーが起きるのは、
同一のメモリ領域にhoge()の実態のアドレスを指すhogeが暗黙的に定数(書き換えできない変数?)として存在しているから。
という理解でいいでしょうか?
333デフォルトの名無しさん:2012/08/05(日) 13:48:36.59
全然違います。
334デフォルトの名無しさん:2012/08/05(日) 13:50:03.24
違いますか・・・
ちょっと考えてみたけどわからないので解説お願いします。
335デフォルトの名無しさん:2012/08/05(日) 14:09:11.63
>>331
64ビットWindowsはsizeof(int)==4です
336 ◆QZaw55cn4c :2012/08/05(日) 14:14:19.82
>>332
フォーマルな理由としては「静的なオブジェクト(代表的には static 変数および extern 変数)と関数は同じ名前空間に属する」と表現するしかなかったのでは。
インフォーマルな理由付けはいろいろあると思いますけど、とりあえず頭ごなしに関数と静的オブジェクト(代表的には static 変数および extern 変数) とは同じ名前にできないものだ、とするしかないと思います。
慣用みたいなものかもしれない。

今まで挙がっていたのはインフォーマルな表現ですが、フォーマルな言質しか認めない、ポリティカルコレクトネスでがんじがらめにするのがお好きな方も多いんです。
私見ではそのような思考の先に創造はないと考えていますが、まあそれはそれ、ひとはひと。
337デフォルトの名無しさん:2012/08/05(日) 15:17:34.21
だれかAVL木とスプレー木のC++の実装のサンプルの場所を教えて下さい。
でもboost::intrusiveは駄目です。解読できません。
338デフォルトの名無しさん:2012/08/05(日) 15:29:30.70
>>335
Windowsだけ変えても駄目だよ。ちゃんとリンカーまで変更しないと64ビットでは動作しない。
プロパティ→構成プロパティ→詳細設定→対象コンピュータ→MachineIA64 (/MACHINE:IA64)
339デフォルトの名無しさん:2012/08/05(日) 15:37:24.29
ちなみに64ビットOSで32ビットのソフトは動くが、64ビットのソフトは32ビットOSでは動かない。
処理速度は、
32ビット環境+32ビットのソフト<64ビット環境+32ビットのソフト<64ビット環境+64ビットのソフト
になる。
340デフォルトの名無しさん:2012/08/05(日) 15:38:29.15
>>332
エラー内容を理解する処からでは?
341デフォルトの名無しさん:2012/08/05(日) 15:50:27.63
>>337
ブーストにインタラじゃないやつあるじゃん
342デフォルトの名無しさん:2012/08/05(日) 16:02:16.37
>>338
IA64もx64(AMD64/Intel64)もsizeof(int)==4だけど
343デフォルトの名無しさん:2012/08/05(日) 16:04:11.16
>>336
うーん、深く考えるなってこと?

>>340
エラー内容はわかってて、変数名と関数名の衝突なんだけど、
なぜコンパイラが変数と関数を区別できないか考えてるところ。
344デフォルトの名無しさん:2012/08/05(日) 16:05:09.23
>>338
ちなみにVC++2010の場合ね。あと、Expressだと64ビット用のライブラリが
足りないから動かなくなる可能性もあるけど。
345デフォルトの名無しさん:2012/08/05(日) 16:11:16.61
>>341
boost全体をAVLでgrepしてみましたが、intrusive以下しか引っかかりません。

346デフォルトの名無しさん:2012/08/05(日) 16:11:32.96
で、sizeof(int) == 4 となる環境はどうやって作るのですか?
347デフォルトの名無しさん:2012/08/05(日) 16:19:02.43
ttp://en.wikipedia.org/wiki/64-bit_computing#64-bit_data_models
sizeof(int)==8の方が小数派にみえる
348346:2012/08/05(日) 16:32:13.73
俺は無知な知ったかぶりの331(=344)を煽ろうとしたのだが
致命的なミスをしてしまったようだ。
349デフォルトの名無しさん:2012/08/05(日) 16:50:19.75
昔、int型はポインタサイズに合わせて大きさが変わると聞いたんだけどな。
今のint型のサイズってどうなってるの??
350デフォルトの名無しさん:2012/08/05(日) 16:52:42.02
そうだな、LP64とかLLP64、あるいはIP64などの言葉をぐぐってみな
351デフォルトの名無しさん:2012/08/05(日) 17:00:51.58
うちの環境で64ビット化しようとしたら、clr:safeにはsizeofはサポートしていません、と出た
352デフォルトの名無しさん:2012/08/05(日) 17:03:45.03
C++/CLIがでたぞー
353デフォルトの名無しさん:2012/08/05(日) 17:43:14.43
>>350
Thanx!!
354デフォルトの名無しさん:2012/08/05(日) 20:05:49.24
とりあえず、boost::intrusiveのavl_setでも読んでみます。
355デフォルトの名無しさん:2012/08/05(日) 20:31:41.21
AVL-TREEは挿入・削除時の回転と二重回転さえ理解できれば分かると思う

あとは2-3-4木と赤黒木などがあるが似たようなもんだ
356デフォルトの名無しさん:2012/08/05(日) 21:11:25.43
>>343
区別が付いてるからエラーになってんだろww

同一空間の変数、関数は一意の名前を付けるというルールにしたがっているわけで
ルールがなんでそうなってるかというと、たんに名前で区別付けたいからとしか言いようがない。

仕様としてはアドレス空間に割り付けられたものに一意の名前を付けるアセンブラの仕様から
受け継がれた内容。

新しい言語作れば変数と関数で同じ名前にもできるだろうけど、そうする手間が割に合わないから
そのままなのさ。
名前空間ってものを作ってそれぞれに同じ名前のものハイチできるようにはしたしね。
357デフォルトの名無しさん:2012/08/05(日) 21:35:13.47
>>343
int piyo=(int)hoge;とかされたときに区別がつかないからじゃ?
358デフォルトの名無しさん:2012/08/05(日) 21:41:07.73
int *hoge;
void hoge(){}

int main(){
void *p = hoge;
return 0;
}
359デフォルトの名無しさん:2012/08/05(日) 21:41:09.38
C++でオーバーロードされた関数のポインタをとるときそういうことをするんだし区別は付けられるだろう
結局のところそういうものとしかいいようがない
360デフォルトの名無しさん:2012/08/05(日) 21:51:26.97
そんなとこに文句つけるなら、まず
外部リンケージで保証されているシンボル名が8文字しかないとか
その辺から文句つけろっての。
シンボル名ってのがアドレスでしかないという制限から来てるんだから。

C++では関数名をマングルすることで重複を可能にしたけど
グローバル変数はそのままだし。
361デフォルトの名無しさん:2012/08/05(日) 21:57:35.76
そういえば、昔、ライブラリの内部で使ってる名前と自分で使う外部シンボル名がかぶると
まともに動かないって話を聞いた気がしたけど
今はそういう問題は解決してるのかね。

int open=-1;
int CreateFileA=-1; int CreateFileW=-1;
int main()
{
 FILE *fp = fopen(...);
 ...
}

みたいな。
362デフォルトの名無しさん:2012/08/05(日) 22:05:09.08
保障されてるのは6文字でしかも大文字小文字を区別なしっていう仕様は
なんとも時代遅れだよな
363デフォルトの名無しさん:2012/08/05(日) 22:23:16.70
>>362
それCの話で、C++はそんなこと無い…よね?
364デフォルトの名無しさん:2012/08/05(日) 22:28:39.17
>>362
ANSIだと31文字までで大文字小文字の区別ありだけど
どこの規格?
365デフォルトの名無しさん:2012/08/05(日) 22:37:46.08
31以上を保証しなければいけないのは、内部リンケージの識別子。
366デフォルトの名無しさん:2012/08/05(日) 22:59:49.39
>>365
どういう事?
static int open → open
int open → _open

6文字じゃ無くても30字以下なら31文字超える事なんて無いでしょ
367デフォルトの名無しさん:2012/08/05(日) 23:03:44.90
31以下の間違いだろ
368デフォルトの名無しさん:2012/08/05(日) 23:10:30.72
>>366
お前が何を言ってるのか、日本語が全然理解できない。

規格では外部リンケージと内部リンケージの
それぞれに要求する最低条件は明確に区別されている。

>>367
ANSI/ISO規格が、処理系に対して、
内部リンケージの識別子を区別する最少長を31以上にすることを要求している。
実際に何文字までが区別されるかは処理系依存。
369デフォルトの名無しさん:2012/08/05(日) 23:16:18.14
http://www.kijineko.co.jp/node/688
Cの規格書なんてほとんど読まれていないのがわかるな
370デフォルトの名無しさん:2012/08/05(日) 23:18:53.10
たしかにC99って全然普及してないよな
371デフォルトの名無しさん:2012/08/05(日) 23:23:16.25
黒歴史だからな
372デフォルトの名無しさん:2012/08/05(日) 23:25:24.63
_Bool だっけ?
373デフォルトの名無しさん:2012/08/05(日) 23:25:27.52
そういえばさ、最近だと
int main=0xc3;
って走らないんだな。
ひさびさに試したらセグった。
374デフォルトの名無しさん:2012/08/05(日) 23:31:07.15
>>368
ああ、外部リンケージだと6文字って話か
アセンブリコードに落とした時の文字数の事言ってるのかと思った
375デフォルトの名無しさん:2012/08/05(日) 23:31:46.13
>>373
0x3c(ret)じゃないの?
376デフォルトの名無しさん:2012/08/05(日) 23:34:38.53
0xC9 だと思ったんだけど。
377デフォルトの名無しさん:2012/08/05(日) 23:36:25.87
あ、C9はZ80か。
378デフォルトの名無しさん:2012/08/06(月) 01:17:36.96
こんだけ情報でれば、納得いかないとかいってたヤツも納得できたんじゃね
379デフォルトの名無しさん:2012/08/06(月) 01:29:21.66
>>373が動かない(試してないけど)のは、NXbitの関係かしら。

mainはデータ領域に確保されていて、そこに制御を移そうとするけど
実行可能属性がついてないとか。
一瞬、C++対応コード(__mainみたいなやつ)の影響かとも思ったけど、違うよね。
380デフォルトの名無しさん:2012/08/06(月) 02:02:01.95
NXbitってなに? おいしいの?
381sage:2012/08/06(月) 06:02:25.33
ようやくAVL木が実装できたっぽい。いくらテストしてもエラーは出なくなった。
でも本当にクソソースで、意味のよくわからないif文(これが無いと時々落ちる)とか、
凶悪な場合わけとか。。。明日boost::intrusiveと性能を比べてみます。
引き続きいい実装ありましたら、よろしくお願いします。
382デフォルトの名無しさん:2012/08/06(月) 18:53:47.01
>>380
お薬だからちょっと苦いよ
383デフォルトの名無しさん:2012/08/06(月) 23:25:42.59
>>380
マジレスすると、amd_86 (x86_64)から実装されたCPUの機能。
windowsだと、データ実行防止機能(DEP)に使われてる。
384デフォルトの名無しさん:2012/08/06(月) 23:39:15.75
>>383
つーかそれx86の欠陥だと長い間言われていたよな
XPSP3からDEP有効に出来るようになったんだっけ
バッファオーバーラン攻撃とか簡単に食らってしまう
385デフォルトの名無しさん:2012/08/07(火) 15:34:36.14
防いでる事例も腐るほどある万能じゃないだけ
あるに越したことはない
386デフォルトの名無しさん:2012/08/07(火) 17:58:08.80
class Hoge {
Hoge(); Hoge(Hoge const &); /* ...ry */
public:
static Hoge * Create();
/* ↓どっちがいい?
static void Delete(Hoge *);
static void Delete(Hoge const *);
*/
};

上のように自動変数を封じたい場合にCreate/Delete関数を作る事があるけど、
この場合にDelete関数に渡すポインタはconstにするべきかしないべきかどちらだろうか
オブジェクトを破壊しているから非constにするべきだ、という主張と
Hoge const *で生成物を受け取った場合にconst_castなしで破棄できないのは見苦しいからconstにするべきだ、という主張が在って迷ってる

387デフォルトの名無しさん:2012/08/07(火) 18:47:33.83
constな成果物を破棄するのは変なので型は非constでいいと思う


ところで非staticは選択肢にないの?
hoge = Hoge::Create();
// ほげほげ

hoge->Delete();
388デフォルトの名無しさん:2012/08/07(火) 18:58:41.79
>>386
RAIIラッパ無しとか例外安全どうするの?
http://ideone.com/nwdwv

C++11かboostありならデリータ付きスマポでいいけど
389デフォルトの名無しさん:2012/08/07(火) 19:09:41.48
constを付ける
理由:普通のdeleteはconst付きでいける

void Delete(Hoge*&);
まあこうしてNULLをセットするようにしておくと双方の違和感が紛れる気がしないでもない
390デフォルトの名無しさん:2012/08/07(火) 21:31:06.04
そもそも、なんのためにそんな気持ちの悪いことをしたいんだ?
391デフォルトの名無しさん:2012/08/08(水) 14:54:39.63
hogeとか使ってる奴はマジキチ
392デフォルトの名無しさん:2012/08/08(水) 15:27:30.65
unkoは?
393デフォルトの名無しさん:2012/08/08(水) 15:29:10.08
汚いですね
394デフォルトの名無しさん:2012/08/08(水) 20:00:27.54
>>386
自動変数を作らせたくないなら
デストラクターをprivateに置いて、自滅用のDestroy関数用意しときゃいいだろうよ。
395デフォルトの名無しさん:2012/08/08(水) 20:01:54.37
ここ数ヶ月unkoを見かける頻度が増えたんだけど
同一人物か?
396デフォルトの名無しさん:2012/08/08(水) 21:39:35.32
2chだと、foo系hoge系の次くらいには昔から見かけない?
397デフォルトの名無しさん:2012/08/08(水) 22:25:04.71
最近になってunkoを意識し始めたからだろ
こういうのって専門用語でなんていうんだっけかな
398デフォルトの名無しさん:2012/08/08(水) 22:29:59.18
うんこ症候群
399デフォルトの名無しさん:2012/08/08(水) 22:30:43.14
日本は韓国以上にスカトロ先進国だからな、仕方ない
400デフォルトの名無しさん:2012/08/08(水) 23:17:34.65
hogeはどう考えてもおかしいよ

きちがい
401デフォルトの名無しさん:2012/08/08(水) 23:38:11.28
402デフォルトの名無しさん:2012/08/09(木) 01:42:58.07
キチガイかどうかは別にして普通は使わないけどね。
403デフォルトの名無しさん:2012/08/09(木) 09:14:18.57
clangでvisual c++の__declspec(property())みたいなのある?
404デフォルトの名無しさん:2012/08/10(金) 14:37:52.01
親クラスのメンバを初期化するとき、
class Oya {
protected:
int age;
};
class Kodomo : public Oya {
Kodomo() : Oya::age(50) {}
};
こう書くとエラーになるのは何でですか?
405デフォルトの名無しさん:2012/08/10(金) 15:07:07.17
class Kodomo : public Oya {
using Oya::age;
Kodomo() : age(50) {}
};

§12.6.2.2
Names in a mem-initializer-id are looked up in the scope of the constructor’s class and, if not
found in that scope, are looked up in the scope containing the constructor’s definition.
[Note: if the constructor’s class contains a member with the same name as a direct or virtual
base class of the class, a mem-initializer-id naming the member or base class and composed of
a single identifier refers to the class member. A meminitializer-id for the hidden base class may
be specified using a qualified name. ] Unless the meminitializer-id names a nonstatic data
member of the constructor’s class or a direct or virtual base of that class, the mem-initializer
is ill-formed. A mem-initializer-list can initialize a base class using any name that denotes
that base class type.

結局Oya::ageとKodomo::ageの区別が曖昧だからじゃね
406デフォルトの名無しさん:2012/08/10(金) 15:35:50.03
気になったのでgcc4.7.1で厳密に調べてみた

..\Derived1.cpp:18:14: error: class 'Kodomo' does not have any field named 'age'

つまり基底クラスのメンバは基底クラスのコンストラクタで初期化しないとコンストラクタが
終了するまで値が確定しないようだ(派生クラスは基底クラスのコンストラクタから順に実行される)

http://www32.ocn.ne.jp/~ons/text/CPP0xFAQ.html.ja
ここの「継承コンストラクタ」を参照して欲しい
こうするしかないか

class Oya {
protected:
int age;
public:
Oya(int i) : age(i) {}
};

class Kodomo : public Oya {
public:
using Oya::age;
Kodomo() : Oya(50) {}
void print() const {
std::cout << age << std::endl;
}
};

int main()
{
Kodomo k;
k.print();
}
407デフォルトの名無しさん:2012/08/10(金) 18:31:33.36
gccは継承コンストラクタを実装していないよ
多分VC11でも実装しない予想
面倒でも今まで通り>>406のように書くべき
408デフォルトの名無しさん:2012/08/10(金) 18:59:25.87
単に値を入れたいだけなら初期化じゃなくて代入すればいいんじゃないの?

class Kodomo : public Oya {
 Kodomo(){age=50;}
};
409デフォルトの名無しさん:2012/08/10(金) 19:10:41.29
Oyaにデフォルトコンストラクタしかないんだし継承コンストラクタとか関係ない
410デフォルトの名無しさん:2012/08/10(金) 20:18:28.78
>>408
まあそうだけどな
RAIIに反するし、参照などはそれでは初期化出来ないけど

>>409
いやgccでこのコードが通らないから
やってみろよ

class Oya {
protected:
int age;
public:
Oya(int i = 0) : age(i) {}
};

class Kodomo : public Oya {
public:
using Oya::Oya; // 継承コンストラクタはgccでは実装されていない
void print() const {
std::cout << age << std::endl;
}
};

int main()
{
Kodomo k;
k.print();
}
411デフォルトの名無しさん:2012/08/10(金) 20:40:43.33
そりゃエラー吐くだろうけど>>404がやろうとしてる
子のデフォルトコンストラクタで親のメンバを別の値に初期化することとは全く関係ないじゃん
Kodomo k(50) って書きたいとかそういう話じゃないだろ?
412デフォルトの名無しさん:2012/08/10(金) 21:21:57.50
>>411
だから無理なんだって
諦めろ
413デフォルトの名無しさん:2012/08/10(金) 22:08:46.48
無理なのは>>404以外承知してると思う・・・たぶん
414デフォルトの名無しさん:2012/08/10(金) 22:13:05.37
直接の疑問に(規格の文面でなく意味の面で)答えておくと

>>404
> こう書くとエラーになるのは何でですか?

同じオブジェクトを二回初期化することになるからです。
> Kodomo() : Oya::age(50) {}
のOya::age(50)が実行される前にOyaの暗黙のデフォルトコンストラクタが実行されて
その時点でOyaの全てのメンバは初期化されています(ageは不定値ですけど)
415デフォルトの名無しさん:2012/08/10(金) 22:15:44.59
virtual継承使えばできるよ
416デフォルトの名無しさん:2012/08/10(金) 22:21:05.18
>>405
権限の格上げにそんなヨサゲな機能があるんだ〜
と思ったらできねぇじゃねぇか
http://codepad.org/qfDeanMt

まぁ、そもそもメンバー変数なんてprotectedにするようなもんじゃないしな。
417デフォルトの名無しさん:2012/08/11(土) 08:17:19.14
それが可能だと2回コンストラクタが動く意味分からんことになるだろ
初期化したいなら>>406 代入したいなら>>408しかねぇよ

struct A{
 A(){}
 A(int n){}
};

struct Base{
 A value;
};

struct Derived:Base{
 using Base::value;
 Derived():value(10){}
};
418デフォルトの名無しさん:2012/08/12(日) 06:44:51.22
純粋仮想デストラクタを使うのってどういう場面ですか?
何もしてないデストラクタ virtual ~myClass() {} みたいなのがあるのですが、
これを純粋仮想にするとコンパイルが通りません。
いったいどういう場面で使うのでしょうか?
419デフォルトの名無しさん:2012/08/12(日) 08:45:31.51
420デフォルトの名無しさん:2012/08/12(日) 09:01:04.93
>>418
純粋仮想デストラクタを使う場面はありません
インターフェイスのインスタンスを作らせないようにするには
コンストラクタをprotectedにします
421デフォルトの名無しさん:2012/08/12(日) 12:00:48.61
struct IHoge {
virtual ~IHoge()
{
} // <- このかっこがなんかウザい
virtual void DoSomething() = 0;
};

こういうときに純粋仮想デストラクタを書くと見た目が気持ち良くなります
422デフォルトの名無しさん:2012/08/12(日) 12:33:15.16
(){}
()=0;
423デフォルトの名無しさん:2012/08/12(日) 14:13:56.22
>>420
なんで?そもそもインターフェースってなんの事を言ってる?
純粋仮想クラスの事言ってるなら、コンストラクターのprotectedなんて必要ないだろうし
テンプレートとのインスタンス化とも関係無さそうだし判らん。
424デフォルトの名無しさん:2012/08/12(日) 14:16:57.24
>>421
派生が迷惑だろ
class IHoge:public Deletable みたいな感じに
仮想デストラクターもったクラスを継承した方がいい
425デフォルトの名無しさん:2012/08/12(日) 15:34:37.59
>>423
純粋仮想デストラクタの使い道を考えたら分かるよ
426デフォルトの名無しさん:2012/08/12(日) 17:59:11.62
>>421,>>424
Hogeとか使ってるヴァカは消えろ
427デフォルトの名無しさん:2012/08/12(日) 18:04:20.86
>>425
this->~Example();
?
428デフォルトの名無しさん:2012/08/12(日) 18:05:47.16
>>426
やだこの人臭い…
429デフォルトの名無しさん:2012/08/12(日) 18:16:19.84
>>426
ようhage
430デフォルトの名無しさん:2012/08/12(日) 18:19:08.78
ラムダみたいにして匿名のクラスをなんとかして作れないんですか

struct Hoge {
Hoge(function<void(void)> h, function<void(void)> w): Hello(h), World(w) {}
function<void(void)> Hello;
function<void(void)> World;
};

template <class T> void Test(T obj) { obj.Hello(); obj.World(); }

int main(void) {
SmartPtr<X> obj(new X);
Test(Hoge(
[obj]() { obj->hello(); },
[obj]() { obj->world(); }));
return 0;
}

このコードからHogeクラスを削りたいんだけど
431デフォルトの名無しさん:2012/08/12(日) 18:24:12.95
純粋仮想デストラクタ
432デフォルトの名無しさん:2012/08/12(日) 18:26:10.95
>>430
問題点がわからん。
433デフォルトの名無しさん:2012/08/12(日) 18:39:35.04
>>432
古いコードのインターフェースだけ変えたいときとか在るじゃん
でもアダプタいちいちかくのメンドくさいじゃん
そんなとき匿名クラスとか書けたら便利じゃん
C++ならそういうのも無理やり書けないかなと思って聞いてみた
434デフォルトの名無しさん:2012/08/12(日) 18:47:06.77
gccでsignature使えたときは
簡単に似たいような事できたんだけどねぇ。
435デフォルトの名無しさん:2012/08/12(日) 20:34:54.98
>>430
またhoge厨か
恥ずかしくない?w
436デフォルトの名無しさん:2012/08/12(日) 20:36:04.19
SomthingとかExampleとか日本人のボキャブラリーには無いからね。
437デフォルトの名無しさん:2012/08/12(日) 20:39:21.04
>>435
頭がおかしいから恥ずかしくないんだよ。
438デフォルトの名無しさん:2012/08/12(日) 20:47:18.76
ああ、それはね




















hogeだったてよwwwwwwwwwwwwwww
馬鹿じゃねwwwwwwwwwwwwwwwwwwww
439デフォルトの名無しさん:2012/08/12(日) 20:53:37.96
hogeが悪いとは思わんけど少なくとも正常じゃないわな

プログラミングがわからないのも当たり前
440デフォルトの名無しさん:2012/08/12(日) 20:56:12.97
Hogeは日本プログラミング業界では長く親しまれてきた伝統文化だが?
異を唱える者は極左思想の危険人物確定。おそらく在日だろうな
441デフォルトの名無しさん:2012/08/12(日) 21:28:24.91
なんとなくwikipedia見てみたが、
> In Japanese, the words hoge and page are commonly used,
> with other common words and variants being piyo, fuga, hogera, and hogehoge.[4]
> Note that -ra is a pluralizing ending in Japanese, and reduplication is also used for pluralizing.
> The origin of hoge as a metasyntactic variable is not known,
> but it is believed to date to the early 1980s.[4]

pageとか見たこと無いんだが…
それにhogeraのraが複数とかなんなんなんだ
442デフォルトの名無しさん:2012/08/12(日) 21:33:38.63
hoge最強!
hogeを否定する奴は即死刑にする法律を作るべき!
443デフォルトの名無しさん:2012/08/12(日) 21:35:37.05
私が何より気に食わないのは、>>437が、たといID非表示板じゃなくとも、同じ発言に身を投じていただろうということが、はっきりとわかってしまうことよ。
匿名な掲示板におんぶにだっこでこんな馬鹿なことをやっているのだったら、どうぞお好きなようにという感じなのだけれど、あなた達ときたら当たり前みたいに、piyoのxyzzyにhogeなfoo barになってしまって――もう、さっぱりね
444デフォルトの名無しさん:2012/08/12(日) 21:46:48.29
445デフォルトの名無しさん:2012/08/12(日) 21:59:53.74
446hogeがこの世界を作った:2012/08/12(日) 22:03:34.23
hogeこそが至高
447デフォルトの名無しさん:2012/08/12(日) 22:10:51.50
Hogeは超一流のプログラマーがブログとかでも普通に使ってるでしょ
だからHoge使うのは常識なんだよ
Hoge使ってない香具師が精神異常
448デフォルトの名無しさん:2012/08/12(日) 22:12:32.03
Hogeの起源は韓国!
449デフォルトの名無しさん:2012/08/12(日) 22:29:22.36
ダサくてキモいhogeなんてチョンにくれてやるよw
450デフォルトの名無しさん:2012/08/12(日) 22:45:43.58
こうして日本にはhageが残った。光あれ!
451デフォルトの名無しさん:2012/08/12(日) 22:51:11.52
hageとか書いたら気を悪くするやつがいるだろ。
452デフォルトの名無しさん:2012/08/12(日) 22:51:32.50
hogeとは我々の内部に広がる宇宙の代名詞。
全ての生命はhogeとともに生まれ、hogeとともに生き、hogeとともににその天命を終える。
453デフォルトの名無しさん:2012/08/12(日) 22:57:35.93
hogeとか馬鹿確定だろ
話の内容を見なくともhoge使ってる時点で馬鹿って分かる

早期に馬鹿を判別するのに便利だわな
454デフォルトの名無しさん:2012/08/12(日) 23:23:45.56
こんなとこに韓国とか出す奴うぜえな
Hogeはイメージがわかないし、古い感じがする。
俺の感覚だと30代後半以上の年寄りだな。

455デフォルトの名無しさん:2012/08/12(日) 23:28:37.76
変数名はともかく関数名やクラス名にあの手の名前をつけて質問してくるのは勘弁してくれ
結局何をしたいのか聞き直さななきゃならんのがめんどくせぇ
456デフォルトの名無しさん:2012/08/12(日) 23:32:46.17
>>455
hoge使って質問するような頭のおかしい奴らがそんなところまで考えられるわけないじゃんw
457デフォルトの名無しさん:2012/08/12(日) 23:33:54.13
コードの読み方を知らないカスが識別子に頼るwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
表面ばっかなぞってコピペ繰り返してきた付けが回ってきたなあwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
458デフォルトの名無しさん:2012/08/12(日) 23:37:20.74
コードの読み方知ってたらHoge使うのかwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
キメェwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
だったら知らないほうがマシだわwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
459デフォルトの名無しさん:2012/08/12(日) 23:39:31.66
荒らしが湧いてるな。
hogeとかpiyoとかfooとかbarとかどうでもいいから
460デフォルトの名無しさん:2012/08/12(日) 23:42:21.11
>>458
ばか丸出しやなあああああwwwwww
知ってたら使おうが使わないだろうが関係ないだろ
できるやつはHoge?ふーんどうでもいいわ読めるしってなる
チンカス低能朝鮮人はHogeなんて読めないニダ!意味わからんチョッパーリ!!!!とふぁびょり出す
そしてお前がそのどちらかは明白だなwwwwwもうわかっただろ?もう国に帰っとけや
461デフォルトの名無しさん:2012/08/12(日) 23:47:32.32
どうでもいいけど、hogeは『これには何の意味もありません』って意味だからな。
462デフォルトの名無しさん:2012/08/12(日) 23:50:50.48
コードにhogeとか混ぜる時点でセンスなさすぎだろ
そんなセンスのない奴がウンコみたいなコード垂れ流すんだろうな
それでオナニーするだけならまだしもネット上にぶちまけるからな
463デフォルトの名無しさん:2012/08/12(日) 23:52:16.72
>>461
じゃあUndefinedValueでも使っとけ
464デフォルトの名無しさん:2012/08/13(月) 00:14:45.52
>>463
なげーよhage
465デフォルトの名無しさん:2012/08/13(月) 00:17:48.56
>UndefinedValue
M$のAPI名思い出した。あっちは明瞭さ優先するために妙に長ったらしくしてるもんな……
ま、そんなM$が公式で批判してるハンガリー記法にしても結局は分かりやすさを出すためだし、
そう考えるとhogeとかはその対極に位置する命名と言える

つまり「とりあえずhogeでいいだろhage」vs「hogeとか訳分からんわ氏ね」ってことだよね
466デフォルトの名無しさん:2012/08/13(月) 00:18:48.22
>>461
意味のないものを使ってデザパタ云々質問すんなや
467デフォルトの名無しさん:2012/08/13(月) 00:54:43.51
人間って心底どうでもいいことでも醜く争えるんだなあ
468デフォルトの名無しさん:2012/08/13(月) 01:13:01.22
>>464
文字数短いほうがいいの?
じゃぁhogeより短いfooでも使ってればいいだろ知能障がい。
469デフォルトの名無しさん:2012/08/13(月) 04:05:32.74
知能障がい
470デフォルトの名無しさん:2012/08/13(月) 08:34:03.76
>>454
お前も世間から淘汰されなければ、30代後半を迎えて年寄りになるさ。

淘汰されなければ…な。
471デフォルトの名無しさん:2012/08/13(月) 10:04:14.85
みんな、無事に歳をとれるように祈ってるわ
472デフォルトの名無しさん:2012/08/13(月) 11:24:22.28
放射能汚染でみんな数年内に死んでるよ
473デフォルトの名無しさん:2012/08/13(月) 11:30:28.73
放射能汚染で死ぬってのは難しそうだな。
474デフォルトの名無しさん:2012/08/13(月) 13:21:27.90
まぁ風邪で死ぬ奴もいるわけだし
475デフォルトの名無しさん:2012/08/13(月) 13:59:17.59
>hoge






















バカじゃねwww
476デフォルトの名無しさん:2012/08/13(月) 15:07:52.19
>>472
まずはお手本を見せてくれ
477デフォルトの名無しさん:2012/08/14(火) 00:37:18.54
>>474
アキラのことか。
478デフォルトの名無しさん:2012/08/14(火) 01:48:26.18
std::fstreamのgetline()に
char*型のhogeって変数入れたらエラー出るんだけどなんでですか?
わざわざstring型のhageを入れて、hage.length+1でnewしてstrcpyして・・・ってめんどうなんですけど
文字数も予め指定しないと行けないし不便で・・・

ファイルから1行づつchar*に入れてくれるクラスとか無いでしょうか?
ぴったりにしたいのでchar配列を予め宣言というのはいやです
479デフォルトの名無しさん:2012/08/14(火) 02:10:01.90
回答が欲しいならソースコードとエラー内容を書くべき
480デフォルトの名無しさん:2012/08/14(火) 03:15:11.48
最後の無限ループはウィンドウが閉じないようにしてる

Run-Time Check Failure #3 - The variable 'hoge' is being used without being initialized.

#include <iostream>
#include <fstream>

using namespace std;

void main(){

ifstream List("GunList.txt");

char* hoge;

while(List.getline(hoge,100)) {

for(int i=0;i<5;i++)
std::cout << hoge;
std::cout << "\n";
}

while(1);
}
481デフォルトの名無しさん:2012/08/14(火) 03:20:05.24
>>480
すまん
for文とstd::はいらない

whileの中身はcoutだけ
482デフォルトの名無しさん:2012/08/14(火) 03:32:55.42
>>478,480
そのエラーの意味がわからないならポインタ使うのは無理だな。
std::string hoge にして std::getline(List, hoge) にしとけ。
あと main() の戻り値は int な。
483デフォルトの名無しさん:2012/08/14(火) 03:35:06.03
hoge初期化してねージャン
char hoge[1024];とでもしとけ
484デフォルトの名無しさん:2012/08/14(火) 05:57:32.76
またhoge基地害が湧いてるのか
485デフォルトの名無しさん:2012/08/14(火) 06:19:57.37
サッカー選手「竹島」主張、韓国協会が謝罪文書
読売新聞 8月13日(月)22時45分配信

 ロンドン五輪サッカー男子の3位決定戦直後に韓国選手が竹島の韓国領有を主張する政治的メッセージを掲げた問題で、
日本サッカー協会の大仁(だいに)邦弥会長は13日、謝罪と再発防止を徹底させる旨を記した韓国サッカー
協会長名の文書を受け取ったことを明らかにした。

 文書は同日付で電子メールとファクスで送られており、大仁会長によると「申し訳なかった。二度とこういうこと
が起こらないように徹底する」という内容だったという。

 国際オリンピック委員会(IOC)のロゲ会長は12日、当該選手の銅メダルを預かりとしたうえで、国際サッカー
連盟(FIFA)規律委員会の決定を待って処分を決める意向を示している。大仁会長も「五輪の場で起こったの
は残念だが、当面はIOCとFIFAに任せたい」と静観する構えであることを強調した。
.http://headlines.yahoo.co.jp/hl?a=20120813-00001408-yom-spo
486デフォルトの名無しさん:2012/08/14(火) 11:24:24.85
>>483
char* hoge="";
でもいいの?
文字数分やらないとダメなのかな
487デフォルトの名無しさん:2012/08/14(火) 11:31:09.63
>>486
getline()で読み込むための場所が必要。
hogeがポインタなら、適切に確保された場所をポイントしないといけない。
hogeが配列でいいなら、>483だな。
まぁ、>482でいいよ。
488デフォルトの名無しさん:2012/08/14(火) 11:36:24.35
>>486
リテラルは書き変え不可。
489デフォルトの名無しさん:2012/08/14(火) 11:37:02.57
>>480
どうでもいいけど無限ループでウィンドウを閉じさせないって随分お大尽だな。
CPUぶん回すことになるからエコじゃないぞ。
単に進行を止めたいだけならgetline()でも充分だろ。
490デフォルトの名無しさん:2012/08/14(火) 11:37:33.83
>>488
そういう問題以前の問題だね。
491デフォルトの名無しさん:2012/08/14(火) 12:30:03.32
>>489
まぁ2秒ぐらい眺めて閉じますし・・・
492デフォルトの名無しさん:2012/08/14(火) 13:57:08.61
493デフォルトの名無しさん:2012/08/14(火) 15:18:09.60
hogeとか使ってる奴がまだいるのか。
そんなんだからいつまでもプログラムが上達せずにこんなところで質問してるんだろうな。
494デフォルトの名無しさん:2012/08/14(火) 15:26:20.73
そのこんなところに来ている自称上級者 (w
495デフォルトの名無しさん:2012/08/14(火) 15:31:48.90
>>491
言い訳してないで、回答してくれた皆さんに感謝の一言でも書きなさい。
496デフォルトの名無しさん:2012/08/14(火) 15:34:15.73
忘れてました、
ありがとうございました!
497デフォルトの名無しさん:2012/08/14(火) 15:55:50.08
>>496は偽物

>>495
言い訳してるわけじゃないんだけど・・・
自分から感謝しろとかこの人病気?

ありがとうございました

これで満足
498デフォルトの名無しさん:2012/08/14(火) 15:58:33.36
>>497が偽者です
499デフォルトの名無しさん:2012/08/14(火) 16:09:04.79
>495が自分から感謝を要求しているように見えたら、それはもう被害妄想。
500デフォルトの名無しさん:2012/08/14(火) 16:12:54.12
釣られんなww
501デフォルトの名無しさん:2012/08/14(火) 16:16:32.76
脳弱だから釣られたことにしないと精神がもたないんですねわかります。
502デフォルトの名無しさん:2012/08/14(火) 16:31:13.30
>>496は善意の偽者が書いた感謝レスで
>>500は釣られたことにしようとしたレスってことか
一体どういうことなんだ・・・
503デフォルトの名無しさん:2012/08/14(火) 16:35:49.91
何にせよhoge使うとアンチhoge厨が湧いてそこから荒れるからかなわん
504デフォルトの名無しさん:2012/08/14(火) 16:37:04.03
>>493
hogeは使わないとして、何使ったらいい?
505デフォルトの名無しさん:2012/08/14(火) 16:42:20.36
>>504
fooとかbarとかだな。
506デフォルトの名無しさん:2012/08/14(火) 17:51:28.31
parとか
507デフォルトの名無しさん:2012/08/14(火) 18:01:15.04
X x;
Y y;
Z z;

これでいいやん
座標が絡む話のときは使えんけど
508デフォルトの名無しさん:2012/08/14(火) 18:10:26.04
>>507
サンプルコードで大文字と小文字と一見して区別のつかないものを
つかうなよ
509デフォルトの名無しさん:2012/08/14(火) 18:15:59.17
大小ぐらい見分けつくだろ
そんなことも見えなくなる老眼爺はさっさと引退しろ
510デフォルトの名無しさん:2012/08/14(火) 18:22:17.53
get1st
getlst
511デフォルトの名無しさん:2012/08/14(火) 18:38:59.03
>>509
うるせぇ近眼クソメガネ野郎は黙れ
512デフォルトの名無しさん:2012/08/14(火) 18:42:58.03
>>511
はあ?こちとら裸眼で1.5の体育会系ですがなにか?
貧弱な坊やと老人は日本から韓国に移住しろよwww
513デフォルトの名無しさん:2012/08/14(火) 18:53:37.30
どーでもいい。
514デフォルトの名無しさん:2012/08/14(火) 18:57:07.36
>>513
おっと負け惜しみですかw
515デフォルトの名無しさん:2012/08/14(火) 19:28:03.24
JavaでもCでも初めての〜とかわかりやすい〜っての読んだあとに何をすればいいかわからない
なにをすればいいんだ
よく自分の作りたいのつくれって言われたりするけど結局手がつかない技術的に
516デフォルトの名無しさん:2012/08/14(火) 19:31:03.14
GUIを勉強すればそこから先はだいぶはかどる
作りたいもの作りながら足りないものをその都度べんきょうするかんじ
517デフォルトの名無しさん:2012/08/14(火) 19:38:01.04
だいたい>>516で合ってる
だけど分からないときに2chで質問するんじゃないぞ
またそれに見あった本を買え
適切な本を自分で選択するのも勉強というか訓練の一環だぞ
518デフォルトの名無しさん:2012/08/14(火) 19:59:29.21
WIN32APIでGUIやったら挫折した
519デフォルトの名無しさん:2012/08/14(火) 20:03:42.27
>>518
気持ちは解るよ
C#に乗り換えると幸せになれる
520デフォルトの名無しさん:2012/08/14(火) 20:22:55.51
>>519
今はQtやってる
そのあとC#勉強する予定
521デフォルトの名無しさん:2012/08/14(火) 20:27:17.81
QtってNokiaから身売りされたんじゃ
大丈夫なのか
522デフォルトの名無しさん:2012/08/14(火) 20:32:25.02
Qtってマルチプラットフォームでいいじゃん、そのあとC#勉強する理由って何?
523デフォルトの名無しさん:2012/08/14(火) 20:33:59.01
>>522
Qtは仕事でやってるに過ぎないんじゃね?
C#は趣味でやるつもりだろう
524デフォルトの名無しさん:2012/08/14(火) 20:38:55.17
>>522
windows環境だとC#のほうがしやすそうじゃん
まぁ理由としてはC#にも興味があるってだけ
525デフォルトの名無しさん:2012/08/14(火) 20:41:38.10
C#のがライブラリ充実してるしMonoもあるから環境もそんな気にしなくていい
むしろQtを使う理由なんてあるの?って感じ
526デフォルトの名無しさん:2012/08/14(火) 20:49:04.39
>>525
Qtを使う理由
・せっかくC/C++勉強したんだからC/C++でGUIアプリ作りたい
・Qtの参考書をすでに購入した(勉強しないともったいない

最初にC#を勉強すべきだったか・・・
527 ◆QZaw55cn4c :2012/08/14(火) 20:52:16.47
>>517
>適切な本を自分で選択する
このコツは実に知りたいもの。今ならgoogleで追い詰める能力かもしれない。
528デフォルトの名無しさん:2012/08/14(火) 20:52:23.10
C/C++でマルチプラットフォームを強制されてる場合はQtがいいと思っているんだが
macでC#って使えるっけ?
529 ◆QZaw55cn4c :2012/08/14(火) 20:54:13.97
>>518
MDI まじかんべん
530デフォルトの名無しさん:2012/08/14(火) 20:55:11.14
mono
531デフォルトの名無しさん:2012/08/14(火) 21:00:01.79
>>526
万事に通じて言えることなんだけどさ、
捨てない理由が「もったいない」だけなら、捨てるべきだよ
532デフォルトの名無しさん:2012/08/14(火) 21:13:08.11
本は売ればいいしね。
533デフォルトの名無しさん:2012/08/14(火) 21:15:06.34
>>529
私もMDIで詰みました

>>531
実行速度的な意味で勉強する価値はあるかなって思ってるけど
・・・どうなんだろう。
534デフォルトの名無しさん:2012/08/14(火) 21:17:26.39
>>527
コツは自分で掴むしかないだろう
学生時代の参考書と同じで他の人に合った参考書でも自分には合わなかったりするから
自分の脳に合った書籍は自分で探すしかない

検索で出てきた情報の99%は誰も保証してくれてないから参考程度にかならない
535デフォルトの名無しさん:2012/08/14(火) 21:34:57.82
よくわからんけどM$がFormsよりもMetroを推し始めたのでQtが嫌になっちゃったんじゃねーの
536デフォルトの名無しさん:2012/08/15(水) 17:39:09.88
コアな部分だけC++でGUIはC#などで作るのがベストだよね
537デフォルトの名無しさん:2012/08/15(水) 22:55:56.00
自動変数とshared_ptr<T>以外使うことってほとんどないんだけどunique_ptr<T>って現実的にどんなパターンで使うの?
538デフォルトの名無しさん:2012/08/15(水) 23:05:27.82
メンバ変数に使ったりvectorに入れたり
539デフォルトの名無しさん:2012/08/15(水) 23:07:23.41
>>538
メンバに持つなら自動変数でいいし
vectorに所有権持たせるならptr_vectorのが簡単じゃないですか?
540デフォルトの名無しさん:2012/08/15(水) 23:15:00.64
>>539
動的多態使いたいときとか
インスタンスではなくポインタで持ちたいときとかないの?
ptr_vector使ったことないから簡単さは知らない
541デフォルトの名無しさん:2012/08/15(水) 23:38:44.73
moveとかカスタムデリータとか便利機能ついてるじゃん
542デフォルトの名無しさん:2012/08/15(水) 23:45:43.07
ユニポのカスタムデリータは動的じゃないからいちいち型書かなきゃいかんからめんどくさいよな
なんで静的にしたんだろう
543デフォルトの名無しさん:2012/08/15(水) 23:47:23.57
動的だとサイズが増えるじゃない
544デフォルトの名無しさん:2012/08/15(水) 23:48:04.71
自分の中で需要があるなら
そのくらい自分で作れよ
545デフォルトの名無しさん:2012/08/16(木) 00:08:28.30
>>544
作ったけど
これぐらい標準で用意しろよって思った
実際削除子の型固定なんてろくな使い道ないし
546デフォルトの名無しさん:2012/08/16(木) 00:11:32.05
typedefして使えばいい
547デフォルトの名無しさん:2012/08/16(木) 00:13:58.65
そういうことじゃないだろ
548デフォルトの名無しさん:2012/08/16(木) 01:43:20.72
標準ライブラリの機能不足がなんだかんだと騒ぐヤツぁ
おじゃばでも使ってろて話しだ
549デフォルトの名無しさん:2012/08/16(木) 03:12:33.15
fgetsは
abcdefghij¥nklmnopq
という文字列が有った場合に、
17文字読み込むように指定すると、
abcdefghij¥nまで読み込みますか?
それとも
abcdefghij¥nklmno
まで読み込みますか?
550デフォルトの名無しさん:2012/08/16(木) 03:17:07.89
・ぐぐる
・試す
・2chで聞く
551 ◆QZaw55cn4c :2012/08/16(木) 03:26:01.87
>>549
\n が改行コードだとして、
>abcdefghij\n
は11バイトですので、ここまで読み込んで末尾に\0をつけ、以上12バイトを指定領域に残します。
552デフォルトの名無しさん:2012/08/16(木) 03:30:08.90
>>545
じゃぁそいつを標準に提案しろ。
553デフォルトの名無しさん:2012/08/16(木) 09:34:32.24
>>542
例えば同種の100個のリソースハンドルがあったとして
それのデリータ関数は1つなのに、関数ポインタなりを100個持つのは無駄じゃね?
554デフォルトの名無しさん:2012/08/16(木) 09:55:18.95
>>551
前から思ってたけど日本語おかしいよ
残します ってなんだよ
555デフォルトの名無しさん:2012/08/16(木) 10:16:26.00
>>553
そういうケースはそうかもしれないけど
じゃあこういうケースはどうするの?

vector<MyUniquePtr<IFoo>> v;

v.push_back(MyUniquePtr<FooX>(new FooX)); // 標準new、delete
v.push_back(MyUniquePtr<FooY>(FooY::Create(), FooY::Delete)); // 隠ぺいされた生成、破棄

FooZPool fac = FooZPool::GetInstance(); // プールされたFooZ
v.push_back(MyUniquePtr<FooZ>(fac.get(), [fac] (FooZ * p) { fac.release(p); }); // 借りたものは借りた場所へ

こういうのはデリーターの型固定じゃだるくね?
556デフォルトの名無しさん:2012/08/16(木) 11:22:34.27
>>555
そういう場合は unique_ptr に動的な削除子の型を指定すればいいんでしょ。
だるいって、具体的に何のことを言ってるの?
557デフォルトの名無しさん:2012/08/16(木) 11:36:21.59
>>556
どうやって?
558デフォルトの名無しさん:2012/08/16(木) 11:49:24.24
>>555
俺の場合FooY::Deleteみたいなのは作らないから
FooYは外部ライブラリだとして、↓みたいに多分ラップすると思う
struct FooYWrap : IFoo{
 FooY* p;
 FooYWrap(FooY* a):p(a){}
 ~FooYWrap(){FooY::Delete(p);}
 ...
};
559デフォルトの名無しさん:2012/08/16(木) 11:57:46.51
>>557
function を適当にラップすれば済みそう。
560デフォルトの名無しさん:2012/08/16(木) 12:06:10.63
>>555
そういうときはintrusive_ptr使うな
561デフォルトの名無しさん:2012/08/16(木) 12:10:29.39
>>557
shared_ptr をラップして削除子だけのために使うという手もあるな。
562デフォルトの名無しさん:2012/08/16(木) 12:20:17.92
>>558
悪くないが沢山あると面倒だしvirtualコール二倍はな
shared_ptrで妥協するか迷うレベル

>>559
function<void(foo*)> f(delete_foo);
unique_ptr<foo, function<void(foo*)> p(new_foo(), move(f));
これが正解か?一歩間違えると例外安全なくなるから注意が必要だが……

>>560
virtual releaseしろってことか?
まあ悪くないな

>>561
コスパいいからunique_ptrなのにshared_ptr使ってたらいみないやん
563デフォルトの名無しさん:2012/08/16(木) 20:41:22.66
コスパいいからunique_ptrなのに動的削除子使ってたらいみないやん
という選択肢はないのか
564デフォルトの名無しさん:2012/08/16(木) 20:53:47.13
動的削除子がないとデストラクタが仮想でない標準ライブラリのような物は継承出来ないな
565デフォルトの名無しさん:2012/08/16(木) 20:54:19.16
あ、継承してもいいけど基底クラスのポインタに派生クラスのオブジェクトへの
ポインタを代入したらあーれー
566デフォルトの名無しさん:2012/08/16(木) 21:04:28.95
ユニポやシェアポに突っ込めばおk
567デフォルトの名無しさん:2012/08/16(木) 21:05:04.55
要するにユニポを最大限生かすのは難しいということだね
やはり生ポインタ最高だぜ!次点でシェアポだな
568デフォルトの名無しさん:2012/08/16(木) 21:12:31.59
今の話題の例にナマポ使ったら余計悪化するやんけ
569デフォルトの名無しさん:2012/08/16(木) 21:36:17.26
struct IFoo { virtual void release() = 0; virtual void method() = 0; };
struct FooImpl : IFoo { void method() { /*...*/ } };
struct FooX : FooImpl {
static FooX * create() { return new FooX(); }
void release() { delete this; }
};
struct Release { void operator () (IFoo * p) { if(p) p->release(); } };
typedef unique_ptr<IFoo, Release> FooPtr;
FooPtr create_foo() { return FooPtr(FooX::create()); }
Fooのコードいじる権限があるならこれがベストやな
既存のコードに手を加えられないなら諦めてラップだ
アロケーションの方法が増えるたびにFooImplを派生してreleaseを作り直せばいい
570 ◆QZaw55cn4c :2012/08/16(木) 21:54:55.57
>>554
んー、じゃ、どうかけばいいの?
571デフォルトの名無しさん:2012/08/17(金) 00:44:05.86
このコードをVC++でコンパイルするとデストラクタと3回表示されるのですがg++だと2回表示されます。
これってg++の方は一時オブジェクトが作られていないということでしょうか?

#include <iostream>
using namespace std;

class hoge {
public:
~hoge() { cout << "デストラクタ" << endl; }
};

hoge func()
{
hoge ob;
return ob;
}

int main()
{
hoge ob;
ob = func();
return 0;
}
572デフォルトの名無しさん:2012/08/17(金) 00:58:56.72
RVO対象になったのかな
573デフォルトの名無しさん:2012/08/17(金) 01:10:04.06
>>572
ggってみたらそれっぽいですね。ありがとうございます
574デフォルトの名無しさん:2012/08/17(金) 04:38:14.46
>>570
「残す」という言葉の意味を考えれば、どう考えてもおかしいだろ。
その場合は寧ろ、「移す」とか「移動する」とか、さもなきゃ単に「書き込みます」とか。
575デフォルトの名無しさん:2012/08/17(金) 04:49:48.65
日本語がおかしいのは俺も思ってた
在日なん?
576 ◆QZaw55cn4c :2012/08/17(金) 07:01:54.31
>>574
>「移す」とか「移動する」とか
私見では、きわめて曖昧かつ不正確な用法であり、普段から厳密性を考慮しない思考習慣が垣間見られますね。
移動する、というからには、移動する前にあったところのものは消える、とでもいうのですか?
どちらかというと「コピー」でしょう。

>さもなきゃ単に「書き込みます」とか。
許容範囲内ではあります。

>>575
>在日なん?
仮に在日だったとしても >>574 よりは日本語の勉強に邁進していると思います。というか、>>574 より脳細胞を使っています。
思考習慣の乏しい日本人でいるくらいなら、頭を使う習慣のある在日外国人で結構。
577デフォルトの名無しさん:2012/08/17(金) 07:15:47.94
>>551>>574も脳細胞の使い方は大差ないようにみえる
578デフォルトの名無しさん:2012/08/17(金) 07:25:17.93
            / ̄ ̄ ̄ `\
           /:\___从__ヽ
           i::/ ''''''  ''''''' i
           |:/ /゚ヽ  、/゚ヽ|  このスレ、癒されるなあ。。^^
           (6    ,ノ(、_,)、   |
           ヽ    ト==イ  ノ
             \_'Uニ´_,/
             /   /
           /   /
         /    /
        :/       ヽ:
       :/         ヽ:  皆さん、グッジョブです!
       :( *‘ω‘*)*‘ω‘*):
     ./          \,
     /   ,     .    、 'i
    ./   r´    人.    ヽi
    i   人_,、__ノ  ヽ、_,,_ノ.|
    |   /  ゚        ゚ .|.|
    |  /(       .з   .iノ
579デフォルトの名無しさん:2012/08/17(金) 07:41:03.93
>以上12バイトを指定領域に残します。
>以上12バイトを指定領域に移します。
>以上12バイトを指定領域にコピーします。
>以上12バイトを指定領域に書き込みます。
俺は「格納します」あたりを推してみよう
580デフォルトの名無しさん:2012/08/17(金) 07:41:11.20
>.577
理由をつけずに放言しっぱなしなぞ猿なみの知能
>>577>>576 ほど脳細胞を使っていないことは明白
581デフォルトの名無しさん:2012/08/17(金) 07:43:13.69
>>580
感想を書き込むのに脳細胞を使う必要があるのかね
582デフォルトの名無しさん:2012/08/17(金) 08:00:39.70
厳密性を考慮して思考した結果が「残す」とか。
そもそも、日本語を勉強しなければいけない段階でお郷が知れるのだが。
私ゃ自分の言語感覚のほうを信じるね。
583デフォルトの名無しさん:2012/08/17(金) 08:32:30.64
>>582
「移す」よりはましだし、結果を「残す」のだから、意味として問題はない

>>582==>>574
ならば、あんた、言語感覚狂っているよ
584デフォルトの名無しさん:2012/08/17(金) 08:38:53.77
>>583
五十歩百歩
585デフォルトの名無しさん:2012/08/17(金) 08:46:54.62
>>583
どんぐりの背比べ
586デフォルトの名無しさん:2012/08/17(金) 08:51:53.77
>>583
目糞鼻糞を哂う。
587デフォルトの名無しさん:2012/08/17(金) 09:13:25.81
いやあ殺伐としてますね

殺伐と言っても馬鹿とか短気なのしかいない殺伐はなんにも面白くないね
588デフォルトの名無しさん:2012/08/17(金) 09:49:43.61
write >= copy > leave >> move
589デフォルトの名無しさん:2012/08/17(金) 10:07:22.84
leave?
590デフォルトの名無しさん:2012/08/17(金) 12:03:59.62
リーブ21
591デフォルトの名無しさん:2012/08/17(金) 17:06:20.24
Qが在日チョンと聞いてきました
Qがすぐファビョるおかしな理由がよく分かりますね
592デフォルトの名無しさん:2012/08/17(金) 18:00:05.80
Qってなーに
593デフォルトの名無しさん:2012/08/18(土) 00:42:38.37
韓国最大手の釜山貯蓄銀行が破産。自己資本比率は驚異の-50.29%
http://engawa.2ch.net/test/read.cgi/poverty/1345217353/


釜山(プサン)地方裁判所は16日、債務超過に陥った釜山貯蓄銀行に対し、破産を宣告しました。

釜山貯蓄銀行は去年2月17日に営業停止処分を受けたのに続き、去年4月29日には、BIS=国際決済銀行による
自己資本比率がマイナス50.29%と、健全性を示す基準の1%を大幅に下回っていたため、
不健全金融機関に指定されました。

当時、釜山貯蓄銀行の資産総額は1兆3000億ウォン、借金は3兆5000億ウォンで、
資本金の増額や第三者による買収など経営改善の可能性も低いことから、
管財人が清算に向けて破産を申請していました。
5000万ウォン以下の預金資産や優良資産などはすでにブリッジバンクのイェソル貯蓄銀行に引き継がれており、
破産宣告により、釜山貯蓄銀行に5000万ウォンを超える預金を預けている
預金者と後順位の債権者は、破産手続きによる配当を受けることになりますが、
残った資産を処分しても、配当として受け取る資金はほとんどないものとみられます。
ただ、5000万ウォン未満の預金者は、今後もイェソル貯蓄銀行の管理のもとで、金融取り引きを続けることができます。
これに先立ち、今月14日には第一(チェイル)、第一2、プライム相互貯蓄銀行が
ソウル中央地方裁判所に破産申請を行っており、
トマト貯蓄銀行とパランセ貯蓄銀行もすでに先月、裁判所に破産を申請しています。
http://world.kbs.co.kr/japanese/news/news_Dm_detail.htm?No=44906
594デフォルトの名無しさん:2012/08/18(土) 02:59:22.36
最大手て
すれちー
595デフォルトの名無しさん:2012/08/18(土) 03:50:51.58
>>592
連続体じゃないことは確か。
596デフォルトの名無しさん:2012/08/18(土) 07:22:56.03
char *argv[] と char **argv をどう解釈すると同じ意味になるんですか?
597デフォルトの名無しさん:2012/08/18(土) 07:34:53.52
>>596
「char *a と char a[] は同じ意味。だから char *argv[] と char **argv は同じ意味」
ぐらいの解釈で思っていたんだが、違うのか?
598デフォルトの名無しさん:2012/08/18(土) 07:36:31.16
hoge[]とかfuga[9]とか書くと
hoge[0]だのfuga[4]だのが実際のデータを指し示す事になってるんだよ
これはわかるよな
じゃあそのとき
hogeとかfugaとかだけ書くと、これは実はhoge[0]とかfuga[0]って先頭データのアドレスになってるんだよな
つまりhoge = &(hoge[0])な
その例だとtypedef char* charpとか置き換えると
charp argv[]とcharp *argvになってどっちもargvはcharpのポインタになってるってわけだ
599デフォルトの名無しさん:2012/08/18(土) 07:37:01.22
おれはや
600デフォルトの名無しさん:2012/08/18(土) 09:26:29.48
微妙に間違っているけどまぁいいか。
601598:2012/08/18(土) 13:47:25.72
なんか間違ってましたかね?
602デフォルトの名無しさん:2012/08/18(土) 15:00:51.45
>>597
コンパイラーによってはconstが付くな
603デフォルトの名無しさん:2012/08/18(土) 15:04:59.47
>>587
まあそうなんですけど、ときに殺伐の中から新しいアイディアが出てくるので、そしてこれは捨てたものでもないので、無理にでも殺伐にしたほうが楽しくていいじゃないですか?
604デフォルトの名無しさん:2012/08/18(土) 15:30:28.49
>>598
>hoge
こんなこと書いてておかしいと思わない?
思わないとしたら本物のキチガイだよお前
今すぐ回線きれクズ
605デフォルトの名無しさん:2012/08/18(土) 17:06:38.08
なんでそんなにhogeに辛く当たるんだ?
hogeに一体どんな恨み辛みがあるのか知らんが、
hogeが全体何をしたって言うんだ。
hogeが可哀想じゃないか。
606デフォルトの名無しさん:2012/08/18(土) 17:08:48.26
hageを連想させるから世界中の禿に恨みを買ってるんだよ
俺も長い事この業界にいるがhogeを叩くやつは俺が見た限りもれなく禿やろうだった
607デフォルトの名無しさん:2012/08/18(土) 17:15:05.72
最近までずっとhoge hage fugaだと思ってた
hoge piyo fugaだったのね
608デフォルトの名無しさん:2012/08/18(土) 17:17:53.48
これからはpiyo推しで安定なんじゃないかな
なんか言葉の響きが可愛いし
609デフォルトの名無しさん:2012/08/18(土) 17:19:36.31
んじゃ、今度からkamuroを使おう。
kamuro -> shinzou -> oiran -> dayuu と使えるぞ。
610デフォルトの名無しさん:2012/08/18(土) 17:23:27.95
hoge hage hige だな
611デフォルトの名無しさん:2012/08/18(土) 20:26:20.57
特にC++のハゲとヒゲは大事だからな。
612デフォルトの名無しさん:2012/08/18(土) 20:29:33.47
>>598
その理解だとsizeofに直接配列を指定したときの説明が付かないよ。
613デフォルトの名無しさん:2012/08/18(土) 22:08:08.77
hogeじゃなくローマ字でいいから意味の解る名前をつけろ
質問にしてもいちいち目的はなんだと訊かにゃならんからめんどくせぇ
614デフォルトの名無しさん:2012/08/18(土) 22:14:31.80
>>613
>意味の解る名前
何のためのメタ構文変数なんだよ……
615デフォルトの名無しさん:2012/08/18(土) 22:16:47.93
じゃあmetaにしとけや脳弱
616デフォルトの名無しさん:2012/08/18(土) 22:18:18.50
>>614
メタの世界はIQ水準が一定以上ないとわからないからね仕方ないよ
617デフォルトの名無しさん:2012/08/18(土) 22:20:12.36
#include<iostream>
using namespace std;

class afoo
{
};

void bfoo(afoo)
{
cout << "cfoo" << endl;
}

int main()
{
bfoo(afoo());
}
618 ◆QZaw55cn4c :2012/08/18(土) 22:31:57.78
もっとまともなメタ構文変数がないものか‥‥
fizz/bazz/gizz?
619デフォルトの名無しさん:2012/08/18(土) 22:34:36.97
>>614
説明ならともかく質問すんのに無意味な名前をつけるな
620デフォルトの名無しさん:2012/08/18(土) 22:36:54.05
>>618
英語かぶれならfoo/bar/baz

>>619
この流れ>>598からの流れだよね?これ質問なのか?
621デフォルトの名無しさん:2012/08/18(土) 22:37:07.24
>>619
臭い
口を閉じろ素人が
622デフォルトの名無しさん:2012/08/18(土) 22:40:19.53
hoge使ってる奴は素人なうえに頭悪いよなw
なんでhoge使ってる奴らって馬鹿しかいないんだろうw
623デフォルトの名無しさん:2012/08/18(土) 22:41:40.48
hageの人は頭が悪いんじゃなくて頭髪が無いだけだよねw
624デフォルトの名無しさん:2012/08/18(土) 23:13:09.87
ハゲは強いトラウマがあるからHOGEにもつい反応してしまう
フサフサな人はHOGEに寛容というのがおれの島での常識
625デフォルトの名無しさん:2012/08/19(日) 09:02:10.37
どーでもいい。
626デフォルトの名無しさん:2012/08/19(日) 12:41:11.07
トラウマじゃなくてコンプレックスな
627デフォルトの名無しさん:2012/08/19(日) 17:49:13.67
>>621
お前はProfessionalなのかよw
628デフォルトの名無しさん:2012/08/19(日) 18:54:56.20
>>618
unko/chinko/manko
が一般的じゃないかな
629デフォルトの名無しさん:2012/08/19(日) 21:07:07.84
昔 外人の技術者が hoge 変数を見て
『hoge って何ですか?』
と真顔でしつこく聞いてきて困惑した。
説明難しいよね。   It's a ・・・ ummm
630デフォルトの名無しさん:2012/08/19(日) 21:35:51.95
>>629
まあhoge、piyo、fugaは日本由来だしねえ
fooとかbarだったら伝わりやすいかも
631デフォルトの名無しさん:2012/08/19(日) 21:52:31.67
fooはRFCがあるけどhogeはJISだったりするの?
632デフォルトの名無しさん:2012/08/19(日) 22:05:18.80
>>629
foobarみたいなもので特に意味は無い
でいいじゃん
633デフォルトの名無しさん:2012/08/19(日) 22:31:33.75
foobarと答えればわかってくれる
634デフォルトの名無しさん:2012/08/20(月) 01:35:01.82
おおかた foo,barすら知らないやつだろ
635デフォルトの名無しさん:2012/08/20(月) 15:48:05.97
韓国大好きフジテレビ、花王提供ドラマ「ビューティフルレイン」第8話でヒュンダイの高速バスが登場
http://engawa.2ch.net/test/read.cgi/poverty/1345437327/


高速バスがヒュンダイ(花王提供ドラマ「ビューティフルレイン」第8話)
http://cdn.uploda.cc/img/img5031bc4a7ea7a.jpg
ヒュンダイ・ユニバース
http://cdn.uploda.cc/img/img5031bc6b2f32e.jpg
http://www.hyundai-motor.co.jp/
花王提供ドラマ「ビューティフルレイン」
http://www.fujitv.co.jp/beautifulrain/


2012.8.19 フジテレビ抗議デモ その1 スタート動画
http://www.nicovideo.jp/watch/sm18661676
2012.8.19 フジテレビ偏向報道抗議デモ その2 フジテレビ本社前定点撮影
http://www.nicovideo.jp/watch/sm18662147
2012.8.19 フジテレビ偏向報道抗議デモ その3 ダイバーシティ前
http://www.nicovideo.jp/watch/sm18662993

【8.19】お台場フジテレビ抗議デモ一周年【主催:メタル兄弟】
1 http://www.nicovideo.jp/watch/sm18658586
2 http://www.nicovideo.jp/watch/sm18659619
3 http://www.nicovideo.jp/watch/sm18660775

香港活動家の尖閣上陸とフジテレビの関係?
http://www.nicovideo.jp/watch/sm18661137
636デフォルトの名無しさん:2012/08/20(月) 16:29:14.26
じゃあ最初からfoobar使えって話だな
637デフォルトの名無しさん:2012/08/20(月) 16:31:56.06
ハゲはいいかげんにしろ
638デフォルトの名無しさん:2012/08/20(月) 17:35:47.99
そうだそうだハゲはキモいんだよ。
生理的に受け付けない。
ハゲは人を嫌な気分にさせるだけだから公共の場に出てくるなよ。
639デフォルトの名無しさん:2012/08/20(月) 17:40:59.89
某ハゲ「じゃあC++使うな!!!」
640デフォルトの名無しさん:2012/08/20(月) 18:07:00.82
カーニハンもリッチーも薄かったような
641デフォルトの名無しさん:2012/08/20(月) 18:11:16.83
あいつらに毛が生えたのがC++だよ
+は毛なんだよ
642デフォルトの名無しさん:2012/08/20(月) 18:19:17.31
+は禿の進行を表している
foobarも禿の名残
643デフォルトの名無しさん:2012/08/20(月) 18:45:41.53
日本のハゲって印象悪いよな
SBやってる帰化チョンのせいじゃね?
644デフォルトの名無しさん:2012/08/20(月) 18:53:35.48
ハゲ←継承したくないのに継承してしまうもの
645デフォルトの名無しさん:2012/08/20(月) 19:37:33.79
>>643
あいつはちゃんと帰化してるから、特に文句は無い
646デフォルトの名無しさん:2012/08/20(月) 19:44:51.96
>>645
ソフトバンク データセンター 韓国
で検索してみるといいよ。
647デフォルトの名無しさん:2012/08/20(月) 19:58:44.87
うわ、ソフバンなんか使う企業あんの?
648デフォルトの名無しさん:2012/08/20(月) 20:48:58.73
フィンペシア紹介してやるからhage厨はそろそろ黙れ
http://www.idrugstore.com/product/1397

性欲なくなるけどちゃんと生えるから毎日飲むんだぞ
649デフォルトの名無しさん:2012/08/20(月) 20:52:47.64
ちんこ と まんこ、
あなたならどっちがほしいですか?
650デフォルトの名無しさん:2012/08/21(火) 00:30:57.13
COMって、あの変なルールに従うと何か得するんですか?
651デフォルトの名無しさん:2012/08/21(火) 00:33:28.67
『全員』が従えば、幸せになる。
652デフォルトの名無しさん:2012/08/21(火) 09:36:55.73
COMは動的言語(VB,VBA,JavaScript,...)が得をします
653デフォルトの名無しさん:2012/08/21(火) 10:10:58.03
http://ideone.com/h8Zmj
すいませんこれなんでエラーになるのかよくわからないんですがなぜでしょうか
マッチする関数がないとコンパイラがいうのですがそうは思えません・・・
654デフォルトの名無しさん:2012/08/21(火) 10:17:50.59
std::remove_reference<F>::type&&からFを逆算しようとしているから
http://ideone.com/EbsJl
655デフォルトの名無しさん:2012/08/21(火) 13:18:08.38
virtual関数ってリスコフの置換原則に違反するよね?
656デフォルトの名無しさん:2012/08/21(火) 13:23:05.08
>>655
オーバーライドの内容によっては、な。
657デフォルトの名無しさん:2012/08/21(火) 13:47:35.28
655じゃないけどwikiみたら

http://ja.wikipedia.org/wiki/リスコフの置換原則
S が T の派生型であれば、プログラム内でT 型のオブジェクトが使われている箇所は
全て S 型のオブジェクトで置換可能であり、それによってプログラムの動作は全く変化しない

って書かれてるんだけどこれマジで?
「正常に動作する」とかなら分かるけど「動作は全く変化しない」なら
ポリモーフィズム全否定になると思うんだが
というかTが純仮想だったらどうすんのかと
658デフォルトの名無しさん:2012/08/21(火) 13:51:32.52
あ、T型の変数でなくT型オブジェクトか
純仮想云々は撤回する
659デフォルトの名無しさん:2012/08/21(火) 17:44:19.62
>>657
>なお、これが派生型の唯一の定義ではない

と書いてあるじゃん
仮想関数が派生型と基本型で動作が違う事はいくらだってある
無理にC++に当てはめようとする事自体おかしい
660デフォルトの名無しさん:2012/08/21(火) 17:55:06.09
C++でのwindowsプログラミングについて質問があります。

コマンドプロンプトで動くコンソールプログラムで
実行すると標準入力待ちになり、入力が送られると演算して標準出力に結果を返し、再び標準入力待ちになるプログラムがあるとします。
(例えば整数を受け付けて素因数分解して返すようなものです)
このプログラムを別のwindowsプログラミングのプロジェクトで利用したい場合どのようにすればいいのでしょうか?

関数としてShellExcecuteやSystemといったものがあることはわかったのですが、
理解不足からか目的にあった使い方ができるようには思えませんでした。
要点をまとめますと、コンソールプログラムの標準入出力を扱うことがc++のwindowsプログラミングでは可能なのかということです。
よろしくお願いします。

661デフォルトの名無しさん:2012/08/21(火) 18:19:45.44
つ[popen(), pclose()]
662デフォルトの名無しさん:2012/08/21(火) 18:24:32.45
>>659
それはつまり
リスコフの置換原則についてはポリモーフィズム全否定であってるってこと?
663デフォルトの名無しさん:2012/08/21(火) 18:29:49.25
そうです
664デフォルトの名無しさん:2012/08/21(火) 18:34:30.64
>>660
Windows前提で細かい制御がしたいならCreateProcessで
STARTUPINFOのhStdInput, hStdOutput, hStdErrorを指定
665デフォルトの名無しさん:2012/08/21(火) 19:44:40.16
>>661
ありがとうございます。
FILE *fp=popen("実行ファイル > 出力ファイル","w")
fputs("入力",fp)
while(出力待ち)
fputs(…)

といった感じでしょうか。いろいろ試してみたいと思います。
PHPには両方向のパイプがあるみたいですね。

>>664
まだ詳しくは見れていませんが
こういうのがあればいいなと思っていた情報のようです。
根本から管理できてもいいんじゃないかとは考えていました。
ありがとうございました。
666デフォルトの名無しさん:2012/08/21(火) 19:56:25.03
>>662
http://www2.ocn.ne.jp/~yamagu/object/LSP-J.pdf
wikipediaなんかあてにせずこっち読んだほうがいい
667デフォルトの名無しさん:2012/08/21(火) 20:11:04.75
>>666
サンクス、把握した

wikipediaのあの文と>>662-663は間違いだな
668デフォルトの名無しさん:2012/08/21(火) 23:21:46.59
c++のストリームについて質問です。こちらVC++2008を使っています。

strstreamを継承して、フラッシュされるとバッファ中の文字列をOutputDebugStringに渡し、バッファをクリアするクラスを考えております。
フラッシュの際に呼び出される関数の名前を教えて下さい。
また、フラッシュの際に呼び出される関数を上記の内容でオーバーライドするだけでよいのでしょうか。
669デフォルトの名無しさん:2012/08/21(火) 23:23:44.62
flush
670デフォルトの名無しさん:2012/08/22(水) 00:01:33.26
flushは仮想関数ではないんですね。嫌な予感がします。
そもそも基底クラスとしてデザインされていなさそうなstrstreamとそのバッファを継承するのも嫌な予感がします。
両方やめておきます。お答えしていただきながら申し訳ありません。
671デフォルトの名無しさん:2012/08/22(水) 00:22:38.46
using namespace std;

class Sample {
string name;
string groupe;
public:
Sample(string const & n, string const & g): name(n), groupe(g) { }
Sample(string const & n, string && g): name(n), groupe(move(g)) { }
Sample(string && n, string const & g): name(move(n)), groupe(g) { }
Sample(string && n, string && g): name(move(n)), groupe(move(g)) { }
};

上のように引数がたくさんあるとconst & と && の両方を書くのがめんどくさいんですが
どうにかして一発で書く方法はありませんか?


672デフォルトの名無しさん:2012/08/22(水) 00:22:42.12
ググればサンプルいっぱい落ちてるのに
strstreamなんて非推奨クラスに囚われたのが敗因
673デフォルトの名無しさん:2012/08/22(水) 00:24:17.87
>>671
テンプレート
674デフォルトの名無しさん:2012/08/22(水) 00:59:09.35
>>672
そうかもしれません。
プログラミングメモ日記というブログに丁度いいサンプルがあったので、いただきました。
675デフォルトの名無しさん:2012/08/22(水) 11:24:47.25
リスコフの置換原則は準拠は無理だが
可能な限り守るとかなり保守性高くなるね
再利用を考えたコンポーネントはすべて準拠するべきだなこれ
676デフォルトの名無しさん:2012/08/22(水) 14:18:09.07
勝手にしてろよ
677デフォルトの名無しさん:2012/08/23(木) 13:09:52.50
例外って糞じゃないですか?
せっかくクラスをカプセル化して再利用性を高めたのに
例外とかいう糞システムのせいでカプセル化した中身を変更したときに
クライアントコードの整合性が失われる可能性があるというのは由々しき事態だと思うのですが
例外信者のみなさんはこの問題についてどう考えているのでしょうか?
678デフォルトの名無しさん:2012/08/23(木) 13:55:44.78
RAIIが分からないならC言語を使いなさい
679デフォルトの名無しさん:2012/08/23(木) 14:02:56.14
>>678
突然なにいってんの?
680デフォルトの名無しさん:2012/08/23(木) 15:23:36.10
馬鹿には理解出来ない
681デフォルトの名無しさん:2012/08/23(木) 15:25:46.11
RAII信者の愚かさは異常
ファイルストリームデストラクタで閉じろバーカ
682デフォルトの名無しさん:2012/08/23(木) 15:26:53.37
はい閉じます^^
683デフォルトの名無しさん:2012/08/23(木) 18:59:12.90
例外も含めてクラスのインターフェイス。インターフェイスを変更するならカプセル化の意味がなくなるのは当然
684デフォルトの名無しさん:2012/08/23(木) 19:01:00.09
しかし例外を投げるかどうかは実装に依存する
インターフェースの実装を切り分けが例外が存在することによって不可能になる
終わってるなこの欠陥システム
685デフォルトの名無しさん:2012/08/23(木) 19:07:21.92
馬鹿にC++は無理
686デフォルトの名無しさん:2012/08/23(木) 19:20:31.14
いや適度に馬鹿じゃないと細かいこと気にしすぎてだめになる
687デフォルトの名無しさん:2012/08/23(木) 19:21:21.43
ダメになるというか
力尽きる
688デフォルトの名無しさん:2012/08/23(木) 19:24:52.92
            _____.
  ┏┳┳┓     /        \   ..┏┳┳┓
┏┫┃┃┃  / /・\  /・\ \  .┃┃┃┣┓
┃┃┃┃┣┓|    ̄ ̄    ̄ ̄   |┏┫┃┃┃┃
┃      ┃┃|    (_人_)     |┃┃      ┃
┃ 珍カス ..┣|     \   |     |┫. STOP!┃
┗━━━━┛\_ ...  \_| _ /...┗━━━━┛
                ┏┻┓┃
..            ┏━┛  ┣┻┓
....           ┗━━━┫  ┗━┓
..                 ┗━━━┛
689デフォルトの名無しさん:2012/08/23(木) 23:47:18.11
クソスレ
690デフォルトの名無しさん:2012/08/24(金) 01:06:48.69
>>677
実装に依存するコードで受けてるクライアントが悪いか、クライアントを
そうせざるを得ない状況に追い込んだライブラリ側が悪い。これは戻り値を
含めてどのエラー通知方法でも発生しうる問題で、例外のせいじゃない。

たとえば >684 のように例外を投げるかどうかが実装に依存するという
ライブラリが提供されていたとして、例外をキャッチする以外に目的の
エラーを識別・捕捉する手段が提供されていないのであれば、ライブラリが
悪い。

この場合、内部で戻り値を使う実装に切り替わる可能性があったとしても
ライブラリのインターフェースで例外を投げるように統一してやる、あるいは
内部で例外をキャッチして戻り値に統一してやる、などをライブラリが責任を
もってやるべき。
691デフォルトの名無しさん:2012/08/24(金) 01:42:09.63
ifstream List("List.txt");
string Text;
while(List && getline(List,Text)) {
TextList.push_buck(Text);
}

このようにしてvector<string>TextListにList.txtの文章を一行づつコピーできる
と聞いたのですがどうしてかわかりません。

http://sato-si.at.webry.info/200703/article_1.html
を参考に
http://www.cppll.jp/cppreference/cppio_details.html#getline
のリファレンスと食い違うところがありまして・・・
692デフォルトの名無しさん:2012/08/24(金) 01:48:16.86
>>691
そのコードが「TextListにList.txtの文章を一行づつコピー」以外のどういう動作をすると思うの?
693デフォルトの名無しさん:2012/08/24(金) 02:17:59.17
http://ja.cppreference.com/w/cpp/string/basic_string/getline
メンテなしで放置されてるcppll.jpとかいう老害サイトのことは忘れろ
694デフォルトの名無しさん:2012/08/24(金) 06:42:57.75
>>691
std::getlineとifstream::getlineは違うからな
勘違いすんなよ
695デフォルトの名無しさん:2012/08/24(金) 12:20:46.32
>>694
なるほど、ありがとうございました
696デフォルトの名無しさん:2012/08/24(金) 20:09:30.79
C++ってCPAN, RubyGemsみたいなのは無いの?
boostは標準化委員会が作ってるtr1候補みたいなものだし
697デフォルトの名無しさん:2012/08/24(金) 20:16:03.10
boost以外でそれらしいものはないよ
698デフォルトの名無しさん:2012/08/24(金) 20:28:53.37
サンクス
やっぱ無いか・・・
ググれば物は色々あるから困るわけではないけど
699デフォルトの名無しさん:2012/08/27(月) 13:04:33.08
>>671

亀レスだがこれ一個だけで良い。
Sample(string n, string g): name(move(n)), groupe(move(g)) {}
デバッガで見ればわかるがコピーの回数は増えない。
700デフォルトの名無しさん:2012/08/27(月) 13:21:24.65
>>699
なるほど
701デフォルトの名無しさん:2012/08/27(月) 13:29:04.22
スクリプト系の言語のようにEOFをつかって文字列を変数として代入をすることはできますか?
C++でも以下のような代入方法を使いたいのですが。

$body = <<<EOF
<代入文字列>
EOF;
702デフォルトの名無しさん:2012/08/27(月) 13:50:17.90
そういうのは無い
1行で書くと長くなるのを分割したいのなら↓こういうのはどう?

const char* str =
 "123456"
 "234569"
 "aslghgflafdh";

// str は 123456234569aslghgflafdh となる
703デフォルトの名無しさん:2012/08/27(月) 14:06:58.14
>>702
ありがとうございます。
704デフォルトの名無しさん:2012/08/27(月) 14:42:41.72
>>696
そんなものがあったら
boost.eggの悲劇はおきなかった
705デフォルトの名無しさん:2012/08/28(火) 00:29:18.33
>>704 kwsk
706デフォルトの名無しさん:2012/08/28(火) 11:40:39.27
>>704
そんな悲劇など無い
707デフォルトの名無しさん:2012/08/28(火) 14:40:00.44
boost.egg
boost.oven
boost.range
708デフォルトの名無しさん:2012/08/28(火) 17:08:35.67
>>707
卵にオーブンレンジ……って何だ?
709デフォルトの名無しさん:2012/08/28(火) 17:48:38.33
hello worldの次は何するのが良いと思います?
参考になりそうなサイト読んでもチンプンカンプン
710デフォルトの名無しさん:2012/08/28(火) 17:55:58.75
「Egg が Boost に入らなかったのは
C++ 七不思議の一つに数えても良いと改めて思いました 」
http://d.hatena.ne.jp/iorate/20110612/1307902555
711デフォルトの名無しさん:2012/08/28(火) 17:59:06.51
>>709
テキストエディタ、画像編集アプリ、ゲームなどを試しに作ってみるとか
712デフォルトの名無しさん:2012/08/28(火) 17:59:57.88
>>711
調べてチャレンジしてみます
ありがとう
713デフォルトの名無しさん:2012/08/28(火) 18:03:08.81
>>709
そのまま教科書を読み進める
714デフォルトの名無しさん:2012/08/28(火) 18:03:11.17
C++11で洋ナシ
ライブラリの補完が優先するような分野じゃなかったて事っしょ
715デフォルトの名無しさん:2012/08/28(火) 18:05:14.01
>>696
みたいなの欲しいな
誰か有志で作らないの?
githubあたりで
716デフォルトの名無しさん:2012/08/28(火) 18:51:38.79
githubでこういうルールを守る集団いたら面白いのだけど

boost naming ルールぐらいは守る
name space は先取りされたら諦める とにかく他と重ならないようにする

717デフォルトの名無しさん:2012/08/28(火) 18:55:53.00
boostに対向して
goost (github boost)
というname space を使う人は少なくともこのルールを守ろう

まずは

goost::egg

718デフォルトの名無しさん:2012/08/28(火) 19:07:05.61
goost::bastaaz
719デフォルトの名無しさん:2012/08/28(火) 19:42:56.01
google::eggにした方が人気でるよ
720デフォルトの名無しさん:2012/08/28(火) 20:12:05.68
チョンと在日チョンは直ぐにファビョります(火病)。
これは劣等遺伝子を持つチョン特有のもので、最近もジャップスレ立てていた犬猿単細胞がファビョったので
容易くレイプ劣等チョン遺伝子を持っている事が分かります。分かりやすいですね?

チョン語と日本語はそっくりな発音が多いとされる。これは、チョンが朝鮮併合後に日本語から
取り入れたものである。つまり、当時のチョン語では単語が足りず、文法も原始的だったのだ。
併合後、日本から取り入れたために発音その他が同じものが多く残っているのである。
当時のチョンは、当時の日本人がびっくりするくらいの土人乞食そのものであったのだ。

日本の朝鮮併合前の写真である(当時のチョン半島の写真)。
当時のチョン半島が如何に土人乞食の文化がまるでないカス民族であったかが分かるだろう。
これがチョン歴史の真実である。乳丸出しの民族衣装がチョンのリアルの民族衣装である。

ttp://www13.plala.or.jp/keibagogo/img/chosen2.jpg
ttp://nandakorea.sakura.ne.jp/img/hitob.jpg
ttp://www13.plala.or.jp/keibagogo/img/chosen3.jpg
ttp://blog-imgs-32.fc2.com/x/i/a/xianxian8181/CHONONNA.jpg

なのでクソを喰う風習も真実ならば、嫁入り前の娘を父親がパンパンと犯すレイプ文化も
リアルにチョンの実態そのものである。チョンが歴史を捏造するのは、こういう恥辱に
まみれた人以下の文化しかない真実を隠そうとしているだけなのだが、現在もチョンは
犯罪とレイプしかしない屑以下の存在である。何でもかんでも捏造し、まさに生きている
価値すらない。チョンと在日チョンは一匹残らず皆殺しにしなければならない。

数学五輪に各国が力を入れていないだけの話ですね。その間隙をぬって一位になったチョンが
工業力で優秀ですか?ノーベル賞を一人でも輩出しましたか?
製品をコピーして低価格で販売するだけしか能がチョンが何を言っているのでしょうか。
自己満足は楽しいですか?
721デフォルトの名無しさん:2012/08/28(火) 20:17:24.49
【悲報】 『ネトウヨ』、フランス&ポルトガル語版Wikipediaに記事を作られる また世界中で恥晒し★2
http://blog.livedoor.jp/googleyoutube/archives/51763377.html
722デフォルトの名無しさん:2012/08/28(火) 20:18:59.83
goost::egg
goost::oven
は予約で
hamigakiも一部改変して使いまわししたい
723デフォルトの名無しさん:2012/08/28(火) 23:13:10.46
>>710
> 思いました (参照).
http://boost.2283326.n4.nabble.com/Egg-review-result-td2708631.html
不採用の理由がきっちり書いてあるじゃねーか。これなら入らなかったのは
悲劇でもないし不思議でもないな。

よく知らないが、その後作者の動きが見られなくなってることのほうに悲劇や
不思議の気配を感じる。
724デフォルトの名無しさん:2012/08/29(水) 03:35:38.87
俺一人でもgoostやるぜ
725デフォルトの名無しさん:2012/08/29(水) 12:58:32.17
めちゃくちゃ初歩的なことで恐縮なんですが質問です。
「3つの変数のうち2つの変数が1である場合」という条件文を作りたいのですが、
そういった事が可能な命令についてわかるサイト等ありますか?
726デフォルトの名無しさん:2012/08/29(水) 13:11:05.31
if(2 == (a==1) + (b==1) + (c==1)){}
727デフォルトの名無しさん:2012/08/29(水) 13:23:45.09
if (a==1?(b==1||c==1):(b==1&&c==1))
728デフォルトの名無しさん:2012/08/29(水) 16:57:55.08
変数が増えるなら、if で1つずつ判定してしまうのも手よ。
条件式が真だった回数を数えておく。
729デフォルトの名無しさん:2012/08/29(水) 17:48:39.83
そだね
730デフォルトの名無しさん:2012/08/29(水) 18:13:04.54
質問です。(長文ごめんなさい)

Sleep(100); ってすれば100msスレッドが中断されけど、
これってOSレベル(と言ったらいいのかな?深いところ)
ではどういう実装になってるのでしょうか?

学校でマイコン実験(Z80)があり、CPUの周波数に合わせて、
無駄な命令(PUSH POPを繰り返す等)をループさせれば、
Sleep(x); みたいになるよと分かったのですが、市販のCPUはHzが違います。

Hzバラバラなのになんで一定時間ってできるの?
わかったとしても、GHzレベルですし、ループに必要なスタックとか足りるの?
そもそもPCって0と1しか扱えないのになんで時間わかるの?

などとわけがわからなくなってきました。

どなたか私に教えてください…
731デフォルトの名無しさん:2012/08/29(水) 18:28:41.70
>無駄な命令をループ
スピンループと言う

>深いところ
「タイマー割り込み スケジューラ sleep」でググってみたらいいよ
732デフォルトの名無しさん:2012/08/29(水) 18:29:19.43
Windows みたいなラウンドロビンなら例えばーー
スレッドがスリープ状態が判別する手段を用意して、
スリープ状態のスレッドには CPU 時間を割り当てない、とか。
733デフォルトの名無しさん:2012/08/29(水) 18:34:34.37
今時の実装だとHPETとか使ってるんだったか
734デフォルトの名無しさん:2012/08/29(水) 20:40:12.92
Cygwin使ってたら
error: cannot pass objects of non-trivially-copyable type ‘struct std::string’ through ‘...’
って出たんだけれどこれなんですか?
エラー部分は
printf("%s\n",s);
sはstring型です。
735デフォルトの名無しさん:2012/08/29(水) 21:03:23.38
printf("%s\n", s.c_str());
736デフォルトの名無しさん:2012/08/29(水) 21:53:50.57
素直にcout使えばいいのに
737デフォルトの名無しさん:2012/08/29(水) 23:05:30.45
>>734
stringじゃなくてcharの配列で受け取る扱いだからポインタで渡せってことでおk?
738デフォルトの名無しさん:2012/08/29(水) 23:06:30.33
>>737
>>735だった
739デフォルトの名無しさん:2012/08/29(水) 23:22:38.31
>>734
解決方法はそれでいいけど、エラーメッセージが言ってるのは
可変長引数 ... に std::string を渡せないってこと。
受け側の扱いは関係ない。

規格の 5.2.2/7 によると "... is conditionally-supported with implementation-defined semantics." らしい。
740デフォルトの名無しさん:2012/08/30(木) 07:57:28.02
linuxでcoutとprintf混ぜるとバグる
741デフォルトの名無しさん:2012/08/31(金) 17:25:38.43
>>740
どんなバグ?

バッファが別々だからflushしないと混ざるのは知っているけどそれはバグとは言えないし……
742デフォルトの名無しさん:2012/09/01(土) 10:31:52.77
自分の思った動作をしない ≡ バグ

って思ってるんだろ。
743デフォルトの名無しさん:2012/09/01(土) 10:35:00.86
作るアプリの仕様に反するならバグだろ
744デフォルトの名無しさん:2012/09/01(土) 14:11:47.00
printfはC++の関数でもあるわけだが。
745デフォルトの名無しさん:2012/09/01(土) 14:13:37.52
746デフォルトの名無しさん:2012/09/01(土) 16:52:48.93
>>744
まあcstdioあるしね……でも、普通coutだけ使わない?
>>740は何故混ぜたし
747デフォルトの名無しさん:2012/09/01(土) 18:07:38.30
韓国、日本に親しい発言をした人物は全員処罰する法案を正式決定!!
http://engawa.2ch.net/test/read.cgi/poverty/1346486057/


韓国放通審議委"親日称賛サイト制裁する"

31日、東亜日報の報道によれば、韓国放通審議委が最近急増している親日を擁護して、
韓国人、韓国史を非難する内容を主題にしたウェブサイトとブログを制裁する方針を決定した。

マネートゥディ イシューチーム イ・チェミン記者

ソース:マネートゥデイ(韓国語) 2012.08.31 08:50
http://www.mt.co.kr/view/mtview.php?type=1&no=2012083108223255359
748デフォルトの名無しさん:2012/09/01(土) 21:37:45.71
>>746
私も 
#inlcude <iostream>

std::cout だけですよ。
C互換というで入れないわけにはいかんのでしょうね。 
new と malloc() の併用も動くんでしょうけど、ごっちゃはきもいっすよねぇw
749デフォルトの名無しさん:2012/09/01(土) 22:05:26.54
とある事情であるクラスのpublicメンバ変数の値を変更したときに
そのクラスのメンバ変数を呼ばなきゃいけなくなったんだけど
ttp://codepad.org/lC9qgKyCの書き方って可搬性のある書き方になってる

黒魔術?っぽいかもしれないからけしからんって言われそうだけど…
750749:2012/09/01(土) 22:07:50.46
ごめん。
呼び出すのはメンバ変数じゃなくてメンバ関数ね
751デフォルトの名無しさん:2012/09/01(土) 22:20:46.58
俺ならそんなことせずに関数を呼び出させるな
752デフォルトの名無しさん:2012/09/02(日) 01:59:02.90
>>749
共用体とC形式キャスト使っといて可搬性って寝言か?
規格レベルの可搬性なら完全に無い
753デフォルトの名無しさん:2012/09/02(日) 03:28:27.03
エラーを絶対に出さないでユーザーに簡単な意思確認をする方法ありますか?
ファイル関係のエラー処理中にユーザーの意思確認をしたいんだけどその意思確認でエラーがでたら困ります
754デフォルトの名無しさん:2012/09/02(日) 03:29:44.89
メッセージボックスでも出せば
755デフォルトの名無しさん:2012/09/02(日) 08:34:48.36
技術者であるなら、「絶対」は気をつけて使った方がいい。

組み込みとかで、全て自分で作ってるのであれば (ソフト的な) エラーをださない
ことは可能かもしれないけど、OS使ってたら >>754 の言うメッセージボックスを
だすだけでも、内部でメモリーとかハンドルリソース等が不足する事態に「絶対に」
ならないとは言えない。

いったいどこまでの絶対が必要なの?
756デフォルトの名無しさん:2012/09/02(日) 09:30:30.95
一秒に一回程度の頻度で試して宇宙の寿命が来るまでに一回の失敗が有るかないかぐらいなら十分です
757デフォルトの名無しさん:2012/09/02(日) 09:35:33.89
普通に考えて自アプリ内でのことじゃね
OSなどの下位レイヤーでの動作なんてユーザモードで動作する一アプリが保証することなど出来ないわけで
758デフォルトの名無しさん:2012/09/02(日) 10:14:36.23
仕様の上で引数間違えなければ例外投げなくてエラーコードを返すこともないならOK
759デフォルトの名無しさん:2012/09/02(日) 10:17:50.52
APIの内部実装の不具合やメモリなどの物理異常によるエラーが無いことを
保証することは出来ません
760デフォルトの名無しさん:2012/09/02(日) 10:21:10.78
じゃあエラー処理中にエラーがでたらどうするの?
その新しいエラーを処理するときにまたエラーがでたら…
そのまたまた新しいエラーの処理でまたエラーが…
761デフォルトの名無しさん:2012/09/02(日) 10:27:53.33
abort
readmeにでも連絡先や掲示板のアドレスを書いておく
762デフォルトの名無しさん:2012/09/02(日) 10:46:21.18
>>760
マジレスしておくと...
(1) ファイル関連で例えばユーザーが指定したファイルがないとかの想定されるエラー
(2) プログラム上ありえない状態になった時などのエラー
を分けて考えるべき。

大抵のアプリなら、(2) の状態になったことを検出したら >>761みたいな処理でいい。

で、(1) のエラー処理中は基本的に他のエラーが発生しないように作って、それでも
エラーが発生したら (2) とするようにするのが普通。

念のために書いておくけど、上の (1) (2) の区分けは、一例でアプリによって変化する、
要件からそういうことを決めるのも、設計の一部。
763デフォルトの名無しさん:2012/09/02(日) 11:04:38.11
VC2010 Expressで

vector<int>::iterator it;

っていう文章がコンパイルでit :定義されていない識別子ですって出るんですが
どうすればいいのでしょうか
764デフォルトの名無しさん:2012/09/02(日) 11:15:20.16
>>763
incledeかnamespaceが足りないんじゃないの?
http://ideone.com/SWqmW
http://ideone.com/VB2Bc
765デフォルトの名無しさん:2012/09/02(日) 11:25:32.55
>>763
これがコンパイルできるかどうかやってみて
ttp://ideone.com/fXdyx
766デフォルトの名無しさん:2012/09/02(日) 11:30:51.72
>>764
includeやusingは書いてあるんですけど
std::vectorって書いたらvectorはstdのメンバーではありませんって出ました。

>>765
テスト用に使っていたWin32コンソールプロジェクトだとコンパイルできませんでしたが
新しく空のプロジェクトファイルを生成したらコンパイルできました。

何が違うんでしょう…
767デフォルトの名無しさん:2012/09/02(日) 11:48:49.49
>>752
レスありがとうございます。
C形式キャストはもともとreinterpret_castで書いてたんですが、アップするにあたり
短い方がいいかなと思ってC形式にしてました。それがダメだったのはちょっと意外でしたが…
共用体がアウトというのはどういった理由からなのでしょうか?
768デフォルトの名無しさん:2012/09/02(日) 13:28:51.19
>>766
>>765が空のプロジェクトでコンパイルできるなら
テスト用のプロジェクト内の設定かプロジェクトのファイル内の記述のどこかがおかしいんだろ
問題が再現する最小のコードを貼れ
769デフォルトの名無しさん:2012/09/02(日) 13:59:35.90
>>766 リビルドしてみたら
770デフォルトの名無しさん:2012/09/02(日) 14:01:26.18
>>767
>(unsigned int)this
>>752じゃないけど、とりあえず殆どの64bit環境でアウトじゃね
771デフォルトの名無しさん:2012/09/02(日) 14:26:23.88
impの部分はキャストできないとかいわれての苦肉の策なんだろうがそんなことして可搬性あるわけないとか
Unionで非PODが解禁されるのはC++11からだけど対応状況はどうなんだろうとか
環境決め打ちのコードにしか見えない
772デフォルトの名無しさん:2012/09/02(日) 14:31:35.89
>>767
http://www.kijineko.co.jp/tech/cpptempls/struct/base_of.html
を使って少し修正してみた
http://ideone.com/50bZ4
多少はマシ・・・かもしれない
773デフォルトの名無しさん:2012/09/02(日) 14:35:10.89
flagの初期化付け忘れてた
http://ideone.com/1Avos
774デフォルトの名無しさん:2012/09/02(日) 14:49:11.47
>>770-773
ありがとうございます。
フムフム 確かにポインタサイズを考慮するの忘れてました…
>771
元のコードのunionてpod型しか入ってないと思うんですが、そうでもないんでしょうか?
>773
ほとんどこれで正解でしょうか?
テンプレート奥が深いですね。
775デフォルトの名無しさん:2012/09/02(日) 18:48:14.19


           竹 島 は 日 本 固 有 の 領 土 で す 。

                 ┌─┐
                 │●│
                 ├─┘
                 |
                /!\
           _   __/-- ::!\        ./\_/"r---、
          / !、__/  ヽ  ヽ \      /ヽ  / /ヽ  ヾi___
         ,/  i_.: ヽ  \   !  \  ....../;;;;;i .\.!. !::::    " ヽヽ
        /   /::    ::::  /:::: :::::i.:::::::'''''\|_/  /i      __ヽ
::::::......    /    /   /::::::::i./  ::  .\.:::::::::'''  丶 ̄ヽ───""".::::.........
       / :::i    _::::::::::::::::/       \
  ::::::::::::::::: ̄ヽ__  /丶--、___−--! ̄""    ザザァ ───── …
   ''':::::::::::::::::::::::::::'''''''''''''''...................
                  ...::::::::::::::::::'''''

776デフォルトの名無しさん:2012/09/03(月) 07:44:52.41
C++の教本買ってみた。これ1冊終えただけじゃまだまだ完璧とは言えませんよね?
777デフォルトの名無しさん:2012/09/03(月) 08:29:06.22
>>776
単に書籍を読んで理解した気になってるなら、おめでたい人だね。
778デフォルトの名無しさん:2012/09/03(月) 08:39:20.07
普通に足りないって言えばいいのに何故皮肉しか言えないのか
779デフォルトの名無しさん:2012/09/03(月) 08:40:17.17
Cは自らハックするものを助く
780デフォルトの名無しさん:2012/09/03(月) 08:57:23.88
と言うかどんな言語でも仕様読み終えただけじゃ完璧じゃないに決まってるだろ……
781デフォルトの名無しさん:2012/09/03(月) 09:37:44.23
C言語は入門書読んでデータ構造とアルゴリズム再発明で十分だった
CPPは入門書読んで加えて良い習慣を身につけてテンプレート覚えて標準イテレータなどの要求を調べてオブジェクト指向学んで他にもいろいろやって
それで最終的にはどうしても必要なかったり指定されなければCPPではなくC#やJAVAなど他の言語で書くようになった
782デフォルトの名無しさん:2012/09/03(月) 09:40:53.04
オブジェクト指向でポインタが必要ならC++だし
必要なければJavaで十分
C#は知らん
783デフォルトの名無しさん:2012/09/03(月) 09:46:30.18
>>778
技術者的に絶対とか完璧って言葉に反応しがちな人も多いからね
ちなみに俺もです

それはともかく
>>776
書籍「C++の設計と進化」とかもオススメ
仕様の背景も書かれてる
784デフォルトの名無しさん:2012/09/03(月) 09:52:51.70
>>776
勉強なら仕様書オススメ
合わせて主要コンパイラがどう実装してるか調べれるとかなり力になる
785デフォルトの名無しさん:2012/09/03(月) 15:07:55.03
タイムアウト付きWaitMessageがないものかと探していたら
MsgWaitForMultipleObjects(1, 0, 0, timeout, -1)
上記で期待通りの動きをしているようですが、これで問題がないのか不安です。
pHandlesに0を指定した場合の挙動を解説しているところはありませんか?
nCountに0を指定すると、ノータイムで0が返ってきました。
786デフォルトの名無しさん:2012/09/03(月) 16:50:52.57
>>432
了解です。ネットとかでもいろいろしらべてみよーかな
787デフォルトの名無しさん:2012/09/03(月) 16:59:27.29
>>786
安価ミス。安価無し
788デフォルトの名無しさん:2012/09/04(火) 20:57:36.78
789デフォルトの名無しさん:2012/09/04(火) 22:02:03.46
>>788
なにもんだよこいつ
790デフォルトの名無しさん:2012/09/04(火) 22:11:22.56
791デフォルトの名無しさん:2012/09/04(火) 22:12:13.99
神「なんだお前だったのか」
792デフォルトの名無しさん:2012/09/05(水) 10:03:54.58
神A「暇をもてあました」

神B「神々の」

神A・B「遊び」
793デフォルトの名無しさん:2012/09/05(水) 18:49:44.28
C++には嫌悪しか感じません。あらゆることがあらゆる仕方で間違っています。
(ジェイミー・ザウィンスキー)

http://goo.gl/xFusD
794デフォルトの名無しさん:2012/09/05(水) 18:56:01.26
正しいものが勝つ世界が成立したら貧困は起こらないし
795デフォルトの名無しさん:2012/09/05(水) 19:31:58.72
「正義の第一条件は正しいことじゃない。強いことだ。だから正義は必ず勝つんだ」
796デフォルトの名無しさん:2012/09/06(木) 15:10:49.08
797デフォルトの名無しさん:2012/09/07(金) 19:36:59.06
孫正義
798デフォルトの名無しさん:2012/09/08(土) 06:11:37.43
>>795
「原理原則」や「机上の空論」を正論と思って賞賛してよいのは中学二年生まで
799デフォルトの名無しさん:2012/09/08(土) 10:40:30.86
コンソールプログラムからDirectXを使う方法ってある?

DirectXをWindowsプログラミングで呼び出すとMicrosoft
のお約束事に付き合わされてうんざりする。

Open Dynamic EngineではコンソールプログラムからOpenGL
呼び出しているけど、ああいうことできないのかなと思って。
800デフォルトの名無しさん:2012/09/08(土) 10:41:37.91
はい
801デフォルトの名無しさん:2012/09/08(土) 11:50:19.65
はい、じゃないが
802デフォルトの名無しさん:2012/09/08(土) 11:59:13.88
普通に呼び出せばいいじゃない
803デフォルトの名無しさん:2012/09/08(土) 13:29:25.19
そのなんとかエンジンで面倒な部分やってくれてるだけだろうに
必要ならその部分を自分でやればいい話
804デフォルトの名無しさん:2012/09/08(土) 18:06:41.54
クラス自身のプロパティaにクラス自身のメソッド内で

this.a や me.a

って書き方は存在しないのですか?
メソッド内での定義変数なのかグローバル変数なのか、
はたまたクラスプロパティなのか判断できない><
805デフォルトの名無しさん:2012/09/08(土) 18:09:41.38
this->a
806デフォルトの名無しさん:2012/09/08(土) 18:09:55.20
そういう書き方はありませんよ
807デフォルトの名無しさん:2012/09/08(土) 18:23:48.91
Visual Studio 2010 Ultimate です。
新規win32フォームアプリケーションの作成後に
標準出力を使おうとしました。

error C2039: 'cout' : 'std' のメンバーではありません。
error C2065: 'cout' : 定義されていない識別子です。

となります。
808デフォルトの名無しさん:2012/09/08(土) 18:25:47.46
win32コンソールアプリケーションを作成しろ
809デフォルトの名無しさん:2012/09/08(土) 18:31:24.64
>>808

int _tmain(int argc, _TCHAR* argv[])
{
  std::cout << 100 << std::endl;
  std::cout << "test" << std::endl;

  return 0;
}



だめだって!!
810デフォルトの名無しさん:2012/09/08(土) 18:33:43.17
>>808
できた。ありがとう!
#include <iostream>
811デフォルトの名無しさん:2012/09/08(土) 18:45:05.92
>>806

やってもいいけど、やる必要なんてあるん?

>>804 がそもそも普通のグローバル変数を使うのが悪い。
せめて名前空間を使ってほしい。


とは言っても、過去に作られたプログラムをメンテナンス
しなければならない立場かもしれんが。

でも、それならこんな質問するわけないし、あれ?

>this.a や me.a って書き方は存在しないのですか?

単にアロー演算子知らなかっただけか。
812デフォルトの名無しさん:2012/09/08(土) 18:47:03.95
>>811
馬鹿ですいません。phpプログラマーなんですが、最近はvb6.0が多くてアロー演算子忘れてましたwww
813デフォルトの名無しさん:2012/09/08(土) 18:51:06.44
>>803

そんなん嫌や。

まあ、directXとコンソールでググれば一応でてくるがな。
814デフォルトの名無しさん:2012/09/08(土) 19:05:31.86
>>812
バカアローwww
815デフォルトの名無しさん:2012/09/08(土) 19:16:55.89
816デフォルトの名無しさん:2012/09/08(土) 19:41:48.05
MessageBox::Show
の第一引数に

std::string message;
message = "メッセージ"

message.data()
を入れても駄目なの???
817デフォルトの名無しさん:2012/09/08(土) 19:42:49.22
ビルドすらできないコードをブログに載せるなザコ
818デフォルトの名無しさん:2012/09/08(土) 19:48:20.45
>ビルドすらできないコードをブログに載せるなザコ
そのコードを閲覧しに行く大馬鹿野郎が居ると聞いて。
819デフォルトの名無しさん:2012/09/08(土) 19:56:20.07
>>816
System::String でかいけつ
820デフォルトの名無しさん:2012/09/08(土) 20:27:27.13
ThreadStart^ threadDelegate = gcnew ThreadStart( インスタンス, &クラス::メソッド );
Thread^ _thread = gcnew Thread( threadDelegate );


スレッド終了できへんでー
821デフォルトの名無しさん:2012/09/08(土) 20:50:00.77
できた。。
ref class kitigai
{
public:
  void kurukuru (void)
  {
    while(1) {
      MessageBox::Show("ループ中");
      if (this->_sending == false) {
        break;
      }
    }

    MessageBox::Show("ループ終わり");
    delete this->_thread;
  }
public:
  void start(void)
  {
    if ( ! this->_thread) {
      this->_sending = true;
      this->_thread = gcnew Thread( gcnew ThreadStart(this, &kitigai::kurukuru) );
      this->_thread->Start();
    }
  }
public:
  void end(void)
  {
    this->_sending = false;
  }
};
822デフォルトの名無しさん:2012/09/08(土) 21:12:28.06
>>821
endで↓するべき

this->_sending = false;
this->_thread->Join();
delete this->_thread;

823デフォルトの名無しさん:2012/09/08(土) 21:31:21.80
>>820
^ って何をする演算子なの?
824デフォルトの名無しさん:2012/09/08(土) 21:33:14.04
>>823
それC++/CLIのGCリソースの参照を保持する演算子
C#なら不要
825デフォルトの名無しさん:2012/09/08(土) 22:14:53.16
class B_Class{
int x;
};

class A_Class{
B_Class B;
};

int main()
{
A_Class A;
}
としたとき、main関数内において、
A_ClassのインスタンスAが持つ、B_ClassのインスタンスBのint型のメンバ変数xに
アクセスするにはどうすればいいんでしょうか?
826デフォルトの名無しさん:2012/09/08(土) 22:15:26.70
すみません、各メンバ変数はprivateです。
827デフォルトの名無しさん:2012/09/08(土) 22:26:41.05
アクセサを用意すればいい。
828デフォルトの名無しさん:2012/09/08(土) 22:57:32.92
>>825
friendにしてもいいし
危険だけど分かりきっているのならそれもあり

アクセサを用意するとどこからでもアクセス出来るようになってしまう
829デフォルトの名無しさん:2012/09/09(日) 09:50:43.75
>>827,828
ありがとうございます、アクセサで値の操作が出来ました。
830デフォルトの名無しさん:2012/09/09(日) 18:58:30.34
C++の基本が分かるサイトはありますでしょうか?
開発環境はXPとVisualStudio2010です。
学生の頃はあまりプログラムやってなかったですし、
入社して半年はExcel VBAしかやってません。

先日C++での開発の方に移動すると聞いて勉強を始めたのですが、
変数の型が多すぎて何もわかりません><
お願いします。お助けください。
831デフォルトの名無しさん:2012/09/09(日) 19:11:52.70
832デフォルトの名無しさん:2012/09/09(日) 19:47:17.49
シングルトンについて質問です。
ネットを色々見て過去4つほど実装したところで初めてリンクエラーが出ました。
実装方法は一緒のはずなので原因の検討が付かない(探しても分からない...)ので質問させてもらいます。

class CSingleton
{
public:
static CSingleton* GetInstance()
{
static CSingleton inst;
return &inst;
};
int func(){ return 1; };
private:
CSingleton();
~CSingleton();
CSingleton( const CSingleton& );
CSingleton& operator=( const CSingleton& );
};
int main()
{
CSingleton::GetInstance()->func();
return 0;
}
// end of file

上記はいつもの実装方法ですがエラーが...。
今までは問題なかったんですけど、何が原因なのでしょうか?
解決方法があれば教えていただけませんか。
833デフォルトの名無しさん:2012/09/09(日) 19:49:09.64
なぜエラー内容を書かない
834デフォルトの名無しさん:2012/09/09(日) 19:51:21.72
>>830
独習C++
effective c++
more effective c++
modern c++ design
n3337
835デフォルトの名無しさん:2012/09/09(日) 19:53:10.51
>>832
質問とは関係ないけどシングルトンの設計間違ってるよ
836デフォルトの名無しさん:2012/09/09(日) 19:54:35.51
>>833
すみません行数オーバーで投稿できなかったので削りました...。

1>Main.obj : error LNK2001: 外部シンボル ""private: __thiscall CSingleton::CSingleton(void)" (??0CSingleton@@AAE@XZ)" は未解決です。
1>Main.obj : error LNK2001: 外部シンボル ""private: __thiscall CSingleton::~CSingleton(void)" (??1CSingleton@@AAE@XZ)" は未解決です。

↑がエラーになります。
837デフォルトの名無しさん:2012/09/09(日) 19:55:58.24
>>836
コンストラクタとデストラクタ書けばいいよ
838デフォルトの名無しさん:2012/09/09(日) 20:02:43.84
>>837
あ、確かに書いてませんでした...。
ありがとうございます!そしてお騒がせしました...。
839デフォルトの名無しさん:2012/09/10(月) 21:22:32.54
visual studio 2010 です。

OutputDebugStringで出力に表示されません。
出力元の表示(S): で デバッグ/ビルド/ビルドの順番 で デバッグ に表示されるのではないですか?
もう意味ワカrませぬ
840839:2012/09/10(月) 21:24:51.31
ageさせていただきます。もうかれこれ2時間ぐらい頑張ってます。
841デフォルトの名無しさん:2012/09/10(月) 21:27:36.79
>>840
たった2時間かよ、帰れカス
842デフォルトの名無しさん:2012/09/10(月) 21:36:56.89
>>841
自分が困っているのはwin32フォームアプリケーションです。

試しに新規作成で試してみました。

コンソールアプリケーション は ○
win32フォームアプリケーション は X ← 識別子が見つかりません

助けてください。

843デフォルトの名無しさん:2012/09/10(月) 21:39:54.72
>>841
 ////////, ''"    ヽミ川川
 |//////, '"       ',川川 えっ!何この偉そうな勘違い童貞・・・
 川/////, '",,,,,,,,,,,,,,,,    r''"',川||
 川f 川f´           ,ィ::ラ',川  
 川ヘ  |    弋て::>     ̄  ',リ
  川 ヘ.__           ヽ /7!  ごめん…
  川川 ヘ     _,. '-‐''"´y'  //
   川川リヘ , '´   __,,,/  / /    ちょと…まじで気持ち悪い!
   川川川|/   '"´   , '´ /||
   川川川|           /川  (都内在住 22歳 OL)
844デフォルトの名無しさん:2012/09/10(月) 21:58:00.04
>>840
2時間だろうが1年だろうが関係ないだろ
こういう頑張ってますアピールしたがるクズって実際使えない

お前に出力表示してもらわなくても誰一人困らないから失せろ
845デフォルトの名無しさん:2012/09/10(月) 21:58:16.78
>>842
お前が困っても俺は困らない。
お前が存在しなくても誰も困らない。
846デフォルトの名無しさん:2012/09/10(月) 22:01:57.06
僕頑張ってます!
って言えばタダで情報もらえると思ってるゴミ野郎だろ。
847デフォルトの名無しさん:2012/09/10(月) 22:09:12.41
ちょっとこんがらがってきたので質問させていただく。
参照カウンタ式のスマートポインタのコンテナをメンバ変数に置いて、それのアドレスを外部に渡して使う時に、渡したものがもう渡した先で使わなくなってもスマートポインタ自体は削除されないの?
848デフォルトの名無しさん:2012/09/10(月) 22:19:23.31
改行すらまともに使えない低脳が答えてもらえると思うなよ。
849デフォルトの名無しさん:2012/09/10(月) 22:28:21.46
>>847
なにいってるかわからないからインデントして書いて
850デフォルトの名無しさん:2012/09/10(月) 23:52:40.68
>>847
改行の有無はどうでもいいがなに言ってるのかわからない
とりあえず、コンテナの要素を削除すればその要素の中身も当然削除される
851デフォルトの名無しさん:2012/09/11(火) 10:09:26.72
>>842
エラーメッセージはそのまま書いて

>>847
スマポ自体の参照かポインタを外部に渡したのなら使い方が間違ってる
852デフォルトの名無しさん:2012/09/11(火) 22:15:25.94
int soc;
listen(soc_waiting, 1);
soc = accept(soc_waiting, NULL, NULL);

hoge(soc){
}
みたいにsocをサブルーチンの引数にするときは
hoge(FILE *i)ですか?
hoge(int *p)ですか?
853デフォルトの名無しさん:2012/09/11(火) 22:20:51.31
foo
bar
854デフォルトの名無しさん:2012/09/11(火) 22:32:18.76
やつが来るぞ
855デフォルトの名無しさん:2012/09/11(火) 22:34:33.91
ざわ・・・ざわ・・・
856デフォルトの名無しさん:2012/09/11(火) 22:35:06.80
>>852
int socを渡すんだからhage(int soc)だろう
857デフォルトの名無しさん:2012/09/11(火) 22:47:10.84
ほげえええええ
858デフォルトの名無しさん:2012/09/12(水) 09:18:59.59
>>852
hoge厨はさっさと消えてね
859デフォルトの名無しさん:2012/09/12(水) 11:34:44.25
hogeってなんだか逞しいイメージ。素敵!
860デフォルトの名無しさん:2012/09/12(水) 11:37:53.35
>>858
今回は来るの遅かったな
861デフォルトの名無しさん:2012/09/12(水) 20:50:55.62
class hogehoge{
hogehoge()
~hogehoge()
public:
hogehogehogehoge()
hogehogehogehoge(int hogehogehoge)
}
で、コードが醜くてこまってます
どうしたら良いですか?
862デフォルトの名無しさん:2012/09/12(水) 20:54:40.89
>>861
エレガントなコードだ
このままで何の問題も無いよ
863デフォルトの名無しさん:2012/09/12(水) 21:04:51.61
整数の足し算や掛け算で
型の最大値を超えて捨てられた部分を手軽に得る方法は有りますか?
864デフォルトの名無しさん:2012/09/12(水) 21:05:28.12
>>861
うん、面白くない。
865デフォルトの名無しさん:2012/09/12(水) 21:12:57.47
866デフォルトの名無しさん:2012/09/12(水) 21:34:49.58
不動小数点数で十分なんじゃね?
867デフォルトの名無しさん:2012/09/13(木) 07:09:36.93
>>866
整数の倍の長さの浮動小数点数では乗算後に精度が落ちる場合がある。
868デフォルトの名無しさん:2012/09/13(木) 07:53:28.35
gmp速いよな
以前自前で作ってみたがへぼくて高速除算が実装できない
869デフォルトの名無しさん:2012/09/13(木) 08:40:17.96
ああいうのてC/C++だけでかかれてんのかな
870デフォルトの名無しさん:2012/09/13(木) 22:39:51.12
クラス Hogeのインスタンスを

Hoge hoge[10]; のように配列で宣言するとします。


hoge[0].GetMyno();のようにして自身の番号を知ることはできるでしょうか?
(この例では0が答え)

1つ考えた方法はstatic mCntのような静的メンバー変数を持って、
コンストラクタでこの変数をインクリメントする方法です。なにか問題点ありますでしょうか?

class Hoge {

int mNo;
static int Cnt;
Hoge() { mNo = Cnt; Cn
int GetMyno() { return mNo;}
}
871デフォルトの名無しさん:2012/09/13(木) 22:43:45.66
ない
872デフォルトの名無しさん:2012/09/13(木) 22:52:46.82
コードが途中でした。

class Hoge {

int mNo;
static int Cnt;
Hoge() { mNo = Cnt; Cnt++; }
int GetMyno() { return mNo;}
}

です。気にしているのはインスタンス化される順番が
配列の要素番号順になっているかどうかです。これが崩れるとカウントアップの論理が崩れます。
873 ◆QZaw55cn4c :2012/09/13(木) 23:01:25.82
874デフォルトの名無しさん:2012/09/13(木) 23:03:23.30
template<size_t U> struct create_hoge{char buf[sizeof(hoge)*U];hoge operator[](size_t);};
を用意すればいいと思うよ。
875デフォルトの名無しさん:2012/09/13(木) 23:12:05.57
>>873
常に保証されているのでしょうか?
876デフォルトの名無しさん:2012/09/13(木) 23:12:28.07
インスタンスの配列はそのままではデフォルトコンストラクタしか呼び出せないので
>>874のように領域を確保してからplacement newをした方が確実だな
これなら任意のコンストラクタを呼び出せる
デストラクタを自分で呼び出さないといけないか
877デフォルトの名無しさん:2012/09/13(木) 23:52:18.44
>>870
先頭要素のポインタを渡して差分をとるのは?

int Hoge::GetMyno(Hoge *first) const { return this - first; }

Hoge hoge[10];
hoge[0].GetMyno(hoge);
878デフォルトの名無しさん:2012/09/13(木) 23:55:53.99
自分をdeleteするのって、いいんだっけか
879デフォルトの名無しさん:2012/09/14(金) 00:00:34.60
よくある
880デフォルトの名無しさん:2012/09/14(金) 00:00:40.68
deleteしたあとメンバ変数にさわらなければいいです
881デフォルトの名無しさん:2012/09/14(金) 00:07:51.22
void SetMyno(int n) { mNo = n;}
つくって最初に
for (int i=0; i<10; ++i) hoge.SetMyno(i);
でよくね
882デフォルトの名無しさん:2012/09/14(金) 00:11:20.89
void init(vector<hoge> & hvec) {
for(vector<hoge>::size_type i = 0, n = hvec.size(); i != n; ++i) {
hvec[i].SetMyno(i);
}
}
これでいいんだよ
C++奴隷って無駄に技巧こらそうとするからむかつくわ
883デフォルトの名無しさん:2012/09/14(金) 00:26:17.65
>>877
連続に確保されてるとは限らないからNG
884デフォルトの名無しさん:2012/09/14(金) 00:29:19.21
同意
ついでに無駄に参照つかうのもやめてほしい
885デフォルトの名無しさん:2012/09/14(金) 00:45:00.51
>>879-880
ありがとう
メンバ変数ペロペロしたいけど我慢するわ
886デフォルトの名無しさん:2012/09/14(金) 01:09:14.60
>>883
配列なら &a[i] = a + i は保障されてるはずだが?
887デフォルトの名無しさん:2012/09/14(金) 01:50:00.49
>>872
> です。気にしているのはインスタンス化される順番が
> 配列の要素番号順になっているかどうかです。これが崩れるとカウントアップの論理が崩れます。
クラスの配列の各要素がコンストラクタで初期化されるときは添え字順に初期化される
888デフォルトの名無しさん:2012/09/14(金) 09:16:14.10
>>887
規格票で示してくれ
889デフォルトの名無しさん:2012/09/14(金) 11:04:07.51
>>888
> 12 Special member functions
> 12.6 Initialization
> 3 When an array of class objects is initialized (either explicitly or implicitly), the constructor shall be called
> for each element of the array, following the subscript order; see 8.3.4.
890デフォルトの名無しさん:2012/09/15(土) 09:57:45.72
>>866
不動小数点って、浮動小数点の対極だよな。
意味的には固定小数点の事だよな。
891デフォルトの名無しさん:2012/09/15(土) 12:30:52.73
すごくうごく 浮動小数点数>微動小数点数>不動小数点数 うごかない
892デフォルトの名無しさん:2012/09/15(土) 13:12:59.68
以前VisualStuido 2008を使ってて、最近2010Expressを使い始めたのですが
簡単なことさえできず、しょんぼりしています。

Windowsフォームアプリケーションで、
TextBoxのValidateで、整数で0〜100とか指定したいのです。
以前は、コントロールからメンバ変数を作成してついでにValidationも設定できて
マクロが自動的に埋め込まれていたと思うのですが、そこで質問。

@Validateのやりかたはどうしたらよいですか?
(フォーカス外れたときに自前でちくちく調べるしかない?)

Aコントロールの値とメンバ変数間でコピーをしていたUpdateDataは廃止になった感じですか?
893デフォルトの名無しさん:2012/09/15(土) 13:31:41.51
そもそも C++ 2010 Express ってフォームアプリなんて作れたっけ?
(Win32API 使いまくるのは別にして。)
894デフォルトの名無しさん:2012/09/15(土) 13:42:28.74
C++/CLIはC++と.NETの橋渡しとして使うものであって
それでアプリを作ろうと思わない方がいいよ
基本はC#で作って、速度が必要な所は#pragma unmanagedしたC++/CLIで作るか
C++で作ってC++/CLIで繋ぐというのが普通
895デフォルトの名無しさん:2012/09/15(土) 13:43:31.56
#pragma managed(push, off)だた
896デフォルトの名無しさん:2012/09/15(土) 14:32:16.25
ふうううううむううそうですか。ありがとうございます。
「Windowsのフォームを作るなら、基本はC#」ということですね。
従来の延長で作ることは諦めます。
897デフォルトの名無しさん:2012/09/15(土) 16:02:12.29
よく見たらMFC使いたいって感じか?
Expressはリソースエディタがないから凄く面倒くさいぞ
898デフォルトの名無しさん:2012/09/16(日) 08:35:59.55
まあ、リソースエディタがあっても十分に面倒くさいけどな
899デフォルトの名無しさん:2012/09/16(日) 14:36:34.68
MFC使いたい感じでしたが、
VS2008でC++からVS2010でC++の壁はどうせ高そうなので
これを機にC#をやってみようと思います。
簡単なアプリならちょっと調べればできました。
900デフォルトの名無しさん:2012/09/16(日) 14:48:57.76
って言うか、express系にはMFC付いてなくね?
901デフォルトの名無しさん:2012/09/16(日) 17:44:49.55
visual stdio2010でwinsock2を使ったネットワークプログラミングを勉強中なのですが
UDPを使ってsendtoで送信するとき,送る文字の型ってconst char *ですよね
unsigned char *型で送るにはどうすればいいですか?
902デフォルトの名無しさん:2012/09/16(日) 17:49:33.32
送るのはバイト列です
903デフォルトの名無しさん:2012/09/16(日) 17:51:29.86
なので送り側受け側共に自作なら好きなようにキャストしてください
904デフォルトの名無しさん:2012/09/16(日) 17:58:04.86
>>902-903
ありがとうございます
905デフォルトの名無しさん:2012/09/16(日) 19:36:22.65
>>901
もうね。やめた方がいいよ。プログラマー諦めろ。
906デフォルトの名無しさん:2012/09/16(日) 21:42:31.46
atomic操作とミューテックスなどを使った排他処理の違いってなんなんですか?
907デフォルトの名無しさん:2012/09/16(日) 21:52:22.50
908 ◆QZaw55cn4c :2012/09/16(日) 22:08:40.16
win32 なら criticalsection とときどき event だけでなんとかなっている
909デフォルトの名無しさん:2012/09/16(日) 22:30:23.82
デッドロックやリソーススタベーションを発生させて楽しんでてください
910デフォルトの名無しさん:2012/09/16(日) 22:51:53.99
DirectXでオブジェクトを任意軸(オブジェクトのY軸)回転させたいと思って
いろいろ試しましたが、どうしても原点を軸に回転してしまいます。

D3DXQUATERNION q;
D3DXVECTOR3 v(0.0f, 1.0f,0.0f);
D3DXMATRIX mat;
q.x = q.y = q.z = 0;
q.w = 1.0f;
v.x = m_mat._21;
v.y = m_mat._22;
v.z = m_mat._23;
D3DXQuaternionRotationAxis(&q, &v, y);
D3DXMatrixRotationQuaternion(&mat, &q);
D3DXMatrixMultiply(&m_mat,&m_mat,&mat);

現状こんな感じですが、足りてないものってありますか?
911 ◆QZaw55cn4c :2012/09/16(日) 22:52:26.09
>>909
criticalsection を注意深く配置する(いちどに二つのリソースを握らない)ことで、デッドロックは排除できるのでは?
スタベーションはスリープしているリソースの生起順に依存するからなあ‥‥OSにおまかせしか方法はないのでは?
912デフォルトの名無しさん:2012/09/16(日) 23:29:05.37
マルチタスクの基礎から勉強しなおしてこい素人
913 ◆QZaw55cn4c :2012/09/16(日) 23:45:33.75
>>912
minix 本には、現実、ダチョウアルゴリズムをminixでも他の多くのosでも採用している、とありました。
異なる二つを同時に握らないようにして、あるいは握るのならば一気に全部握ってしまい握れなかったらあきらめるし握れたら分けてあげようなんて考えない、そしてあとは運にお任せしかないのでは?
眠った順に起きてくれることを保証してもらえればありがたいんだけれども。
914デフォルトの名無しさん:2012/09/16(日) 23:57:37.64
>>910
>現状こんな感じですが、足りてないものってありますか?
頭。
915デフォルトの名無しさん:2012/09/17(月) 00:20:05.99
>>913
運だと?さすが素人は言う事が違うな
916 ◆QZaw55cn4c :2012/09/17(月) 00:33:51.36
>>915
minix 本には ostrich alogorithm ってかいてありますよ。http://ja.wikipedia.org/wiki/%E3%83%80%E3%83%81%E3%83%A7%E3%82%A6%E3%83%BB%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0
分野は違うけれども最強のシンプレックス法にも摂動問題がありますしね。
一度にひとつしかリソースを握らないように工夫するしかないのではないのでしょうか。それともスタベーションに対する有効な手法が存在するのでしょうか?
917デフォルトの名無しさん:2012/09/17(月) 00:40:44.50
疑問を投げかける振りをして相手から知識を引き出そうとする
姑息だな
情報はタダじゃねーんだよ
918 ◆QZaw55cn4c :2012/09/17(月) 00:45:12.01
>>917
情報をお持ちなのならね
919デフォルトの名無しさん:2012/09/17(月) 00:56:03.67
>>917
そこは老獪と言った方がいいよ
Qはロートルだから
920デフォルトの名無しさん:2012/09/17(月) 00:57:12.03
QZは学生だろ
921デフォルトの名無しさん:2012/09/17(月) 00:59:01.17
MS-DOSを知ってる年代が学生だと?
922デフォルトの名無しさん:2012/09/17(月) 00:59:28.33
あとPC-9801という発言も
923デフォルトの名無しさん:2012/09/17(月) 02:03:35.13
「小さい頃に家にあった」レベルなら、ぎりぎりくらいか。
924デフォルトの名無しさん:2012/09/17(月) 02:37:28.42
MEたん辺りまでは中身がdosだから、PCに強い奴ならトラブったときとかでdosを使わざるをえない状況に陥るぜ?
PC98も高校になぜか残ってたし、研究室で未だ現役って可能性もある。
925デフォルトの名無しさん:2012/09/17(月) 05:01:20.67
興味無い。よって、どーでもいい。
926デフォルトの名無しさん:2012/09/17(月) 07:34:21.63
ギリギリどころか立派なロートルやん
927デフォルトの名無しさん:2012/09/17(月) 08:11:38.69
>>920
体は大人、頭は子供 ってやつだろ。
928デフォルトの名無しさん:2012/09/17(月) 09:41:46.25
>>907
どうもです
アトミック操作は並列操作に対して安全にできる一連の処理のことで
ミューテックスはその実装手段の一つ
よく使われるもの(コンペアスワップなど)に関してはOSがミューテックスよりパフォーマンスのよいアトミック操作を提供することもある
みたいな感じですかね
929デフォルトの名無しさん:2012/09/17(月) 11:41:59.39
>>928
Win32に関しては4種類あるよ
・クリティカルセクション
・ミューテックス
・セマフォ
・イベント

イベントはlock-freeだけどwait-freeではない
メッセージポンプを使って一つずつ送り出してやる必要がある
wait-freeはOSが対応してないと無理だしな
Win64にも無いようだ
マルチコア環境でマルチスレッドを使えば似たような事が出来るが
それですらWaitForMultipleObjects()を使うだろ?
930デフォルトの名無しさん:2012/09/17(月) 12:21:23.17
>>928
>OSがミューテックスよりパフォーマンスのよいアトミック操作を提供することもある
OSじゃなくてCPUな
931 ◆QZaw55cn4c :2012/09/17(月) 13:47:47.72
あと付録でインターロック関数群があったね、もう何に使うのか想像できないや
InterlockedIncrement(), InterlockedDecrement(), InterlockedExchange()
最後のは動きとして有名だったようだが、今は CAS?TAS?
932デフォルトの名無しさん:2012/09/17(月) 14:26:24.48
>あと付録でインターロック関数群があったね、もう何に使うのか想像できないや

本も買わずに言ってるわけか
さすが金なし中年ニート

今までQが披露したプログラムテクニックも大部分が必死でぐぐって見つけたものだったしな
ネット上に落ちてる情報なんてそんなもんだ
933 ◆QZaw55cn4c :2012/09/17(月) 14:51:08.35
>>932
△プログラムテクニック
○プログラミングテクニック

いつも思うんだけれども、あんたの用語の使い方は問題があるね。用語と用法には正確を期してください。
ググッて見つかるのであればそれはそれで結構なことですよ。

インターロック関数群はね、既存のセマフォやミューテックス、モニタ等に手を加えたものを自分で作るときに使うものです。
「何に使うのか想像できない」と書いたのは、そこまで記述できる能力はないから。
インターロック関数群を使ってセマフォやミューテックスを再記述する趣旨の書籍にはまだ出会っていません。

というか、
http://toro.2ch.net/test/read.cgi/tech/1345810057/954
によると、あんた、プログラミングの知識もないのに雇われてステマしてるんですって。
確かに実際にプログラムの内容に言及して煽られたことは数えるほどしかないし‥‥‥
単位給いくらぐらいなの?私にもできるかな?
934デフォルトの名無しさん:2012/09/17(月) 14:57:05.25
>>933
木を見て森を見ずの典型的パターン
935デフォルトの名無しさん:2012/09/17(月) 14:58:08.15
>というか、
>http://toro.2ch.net/test/read.cgi/tech/1345810057/954
>によると、あんた、プログラミングの知識もないのに雇われてステマしてるんですって。

なんすかこれ
俺書いてないんだけど
コテもないのに誰が書いたかわかるんだへ(´・∀・`)エーエスパーですか?
936 ◆QZaw55cn4c :2012/09/17(月) 15:02:46.57
>>934
しかたがないです。木を一本一本みていけば森もわかるようになる、と根拠もなく信じている人ですから。
で、どの点に森がみえていない、とお感じになったのかよろしければ。
937デフォルトの名無しさん:2012/09/17(月) 15:04:52.01
>で、どの点に森がみえていない、とお感じになったのかよろしければ。

またこの手か
人に聞いてばかりいないでちっとは自分で考えろアホ
プログラムを必死にぐぐって調べている頭じゃ無理だろうけどな
だから「頭悪い」と言われるんだ
いい加減気づけ
938デフォルトの名無しさん:2012/09/17(月) 15:11:09.77
>>937
人から指摘されたもの→100%反論する

これがQの手口だから
どうせプログラムにしたってあちこちぐぐってはそこのブログにコメ欄があったら
文句言って回ってんじゃねーの
こいつの性格からして十分あり得る

しかし「自分で洞察した事には文句が付けられない」
Qには決して具体的な指摘はしてはならない
自分で気づくまで放置
939デフォルトの名無しさん:2012/09/17(月) 15:44:58.82
なんか番号が飛び飛びかと思ったら
940デフォルトの名無しさん:2012/09/17(月) 15:55:06.86
またQの仕業か。
941デフォルトの名無しさん:2012/09/17(月) 16:13:23.35
アンチQZがうざいよね雇われてるのか?
942デフォルトの名無しさん:2012/09/17(月) 16:15:53.06
コテを外したQが発狂中
こいつ暇になると構ってもらいに行くしかないんだな
マジ哀れ・・・
943デフォルトの名無しさん:2012/09/17(月) 22:20:16.08
いくらなんでもレスする間隔短すぎんだろ
関係ない雑談なんかどうでもいいわ
944 ◆QZaw55cn4c :2012/09/17(月) 22:35:35.76
手の込んだ自演でしょう。はやくIDつくといいですね。
945デフォルトの名無しさん:2012/09/17(月) 23:41:02.70
コテ外して自分で煽ってる癖に・・・
946デフォルトの名無しさん:2012/09/18(火) 00:13:54.92
後れ馳せながら、VS express の desktop 入れたんだが、今回からライセンス用件変わったのか?
前はオープンソース目的ならOKだった気がするんだが、今回から評価限定になった?
ライセンス登録に勤務先情報必須とか、まいるなあ。
947946:2012/09/18(火) 00:14:31.87
あっ、2012ね。
948デフォルトの名無しさん:2012/09/18(火) 00:15:08.12
メモリオーダー?の話だと思うんですが
あるスレッドに書き換えられた変数がほかのスレッドから見たときに書き換えられたことが反映される前にアクセスされることがある
というのがよくわからないのですが物理的にメモリが書き換えられたらどのスレッドが見ようが同じだと思うんですがこれはいったいどういうことなんでしょうか?
949デフォルトの名無しさん:2012/09/18(火) 00:38:37.27
レジスタに乗ってたりCPUキャッシュに乗ってたりすると書き換えがまだ反映されてない場合がある
アセンブラをちょっとかじってみればいい
950デフォルトの名無しさん:2012/09/18(火) 00:39:06.98
>>948
キャッシュかとも思ったが、プログラマから黒子のキャッシュの存在が見えてしまっては本末転倒。なんだろう?
スレッドの実行順序をまったく仮定せず、共通でみるメモリは排他制御用のセマフォなりミューテックスなり私好みのクリティカルセクションなりでガードするのが背折という気がします。
これならばまったく安全なはずです。
951デフォルトの名無しさん:2012/09/18(火) 00:52:33.30
>>948
メモリコヒーレンスでぐぐってみ
いろいろおもしろい事がわかるぞ
952デフォルトの名無しさん:2012/09/18(火) 01:01:42.09
アセンブラとキャッシュの相関は無いと思うんだ
953デフォルトの名無しさん:2012/09/18(火) 01:18:58.72
プログラマからキャッシュの存在はみえないよね
954デフォルトの名無しさん:2012/09/18(火) 07:28:26.67
cacheが見えないなんてのはバカ向けの話だよ
透過的と考えていい場合もあるし、どっちでもいい場合もあるけど、
ケアした方がいい場合やケアするとよりよくなる場合もある。

kernelコードでは普通に意識するし、アプリケーションコードでも性能を高めるため
cacheに乗りやすいデータ構造になるよう意識する人は意識している
955デフォルトの名無しさん:2012/09/18(火) 07:41:49.55
>>954
>cacheに乗りやすいデータ構造になるよう意識する人は意識している

そういう質問してる?
956デフォルトの名無しさん:2012/09/18(火) 08:45:57.10
cache に載りやすいとかそういう問題じゃなく、キャッシュと主記憶に差があることがプログラマから見えるかどうかの話なんですが?
957デフォルトの名無しさん:2012/09/18(火) 13:08:16.83
>>956
実行してみて、処理時間に極端な差が出て気付くこともしばしば。
958デフォルトの名無しさん:2012/09/18(火) 13:21:43.71
char* str = malloc(sizeof(char) * 1024);
この場合、strのサイズを取得するにはどうすればよいですか
sizeof(str)とかsizeof(*str)では実際の変数サイズは取得できなかったのですが。。
959デフォルトの名無しさん:2012/09/18(火) 13:23:45.65
>>958
strのサイズはsizeof(str)で得ることができる通り、sizeof(char *)と同じです。
malloc()で確保した容量を知りたいと言うことでしたら、一般的な方法はありません。
自分で管理しましょう。
960デフォルトの名無しさん:2012/09/18(火) 13:25:19.26
>>958
sizeof(str) ≡ sizeof(char *)
sizeof(* str) ≡ sizeof(str[0]) ≡ sizeof(char)
961デフォルトの名無しさん:2012/09/18(火) 13:48:31.27
うーん、そうですか..
では、strを初期化したい場合はどうすればよいですか
memset(str, 0, 1024);としてもstrのサイズが1024である保証はないですよね
962デフォルトの名無しさん:2012/09/18(火) 13:58:40.40
・確保数を知ってる所で初期化もやる
・構造体で数とポインタをペアにして管理
963デフォルトの名無しさん:2012/09/18(火) 14:02:57.52
一応↓のようなものが用意されてる処理系もある(もちろん非標準)
http://msdn.microsoft.com/ja-jp/library/z2s077bc(v=vs.80).aspx
ただし、malloc()は厳密に引数で指定したサイズよりも大きい値を内部的に
確保することが多く、どっちみちあまり信用しない方がいい

malloc()を呼び出した人(関数)しか確保したサイズが分からないので
別の場所(関数)でその領域を使用したい場合は、領域のサイズを引数等を通じて
教えるように作るのが普通

それと単にゼロ初期化したいだけなら最初からcalloc()使えばいい
964デフォルトの名無しさん:2012/09/18(火) 15:03:50.16
>>961
>strを初期化したい
char * str = NULL;
965デフォルトの名無しさん:2012/09/18(火) 23:15:34.04
>>961
自分で確保したんだから‥‥、って冷たいですよね。
でもしかたがない。自力で管理しておくしかないでしょうね。
966デフォルトの名無しさん:2012/09/19(水) 02:22:25.04
#define sizeof_str(a) *((size_t*)a-1)
char*str=malloc(sizeof(size_t)+sizeof(char)*1024)+sizeof(size_t);

free((size_t*)a-1);
967デフォルトの名無しさん:2012/09/19(水) 07:46:03.76
ん?
968デフォルトの名無しさん:2012/09/19(水) 07:51:12.41
BSTR型みたいなもんてこと?
969デフォルトの名無しさん:2012/09/19(水) 14:07:23.23
ほげええええ
970デフォルトの名無しさん:2012/09/19(水) 17:24:59.14
ソレやり出したら
言語と関係無い階層で幾らでも情報詰め込めるようになるからなー
971デフォルトの名無しさん:2012/09/19(水) 18:24:59.44
C++を勉強し始めようと思っています。
せっかくなのでC++11というのを勉強しようと思うのですが
良い入門書をご存知ありませんか
972デフォルトの名無しさん:2012/09/19(水) 18:32:37.42
ISO/IEC 14882:2011っていうのがおすすめ
973デフォルトの名無しさん:2012/09/19(水) 18:33:43.56
C++11の処理系が十分でないから、C++03から入ることを薦める
974デフォルトの名無しさん:2012/09/19(水) 18:47:19.14
>>971
入門なんてググっていればいい
ある程度基礎が分かったら中級者以上を対象とした本を手に取ればいい

いくつか候補として挙げると
 Exceptional C++
 新訂版 More Effective C++
 Modern C++ Design
 C++の設計と進化
975デフォルトの名無しさん:2012/09/19(水) 19:18:20.48
>>974
おい、C++11の話だぞ

とりあえず日本語の入門書はまだない
というか、C++03勉強してからの方がいいぞ
976974:2012/09/19(水) 19:21:56.24
>>975
すまんC++03を先にやれって一文を書き忘れた
977971:2012/09/19(水) 19:55:58.78
ありがとうございます
取り合えずプログラミング言語C++第三版ってので勉強します
ある程度進んだら>>974の本を読んでみます

>>972
CHF 238,00ってひょっとして202.3万円ですか?
流石に買えません……
978デフォルトの名無しさん:2012/09/19(水) 20:14:14.53
2万ぐらいだろ
979デフォルトの名無しさん:2012/09/19(水) 22:20:43.08
>>977
>>972が言ってるの入門書じゃなくてC++11の言語仕様書そのものだよw

ちなみに、ほぼ同じもの(ドラフト版)ならPDFで読める
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3242.pdf

200万ワロタ
980デフォルトの名無しさん:2012/09/19(水) 22:27:47.02
補助単位までフランで数えるなよ
981デフォルトの名無しさん:2012/09/19(水) 22:36:12.57
>>979
すっげー重いな
まあ本物持ってるからいらないけど
982デフォルトの名無しさん:2012/09/20(木) 07:37:48.96
欧州は小数点をコンマで書くのだよ
983デフォルトの名無しさん:2012/09/20(木) 07:38:00.47
984デフォルトの名無しさん:2012/09/20(木) 07:58:55.73
小数点はカンマが世界標準
985971:2012/09/20(木) 13:18:12.20
>>979
ありがとうございます。
新しい言語を学ぶ時は一次資料である仕様書も揃えた方が良いかと思っています
しかしすごい分量ですね

>>978-984
なるほど、カンマは小数点だったんですね
勉強になりましたありがとうございます
986デフォルトの名無しさん:2012/09/20(木) 21:07:22.54
>>984
中国、インド、アメリカ、パキスタン、ナイジェリア、日本、メキシコだけで世界人口の半分越えてるので
人口で考えればピリオドの方が主流
987デフォルトの名無しさん:2012/09/20(木) 22:54:16.44
ISOは小数点にカンマだけ使うけどCGPMではどっちでもいいことになってる
ドットだけ使う世界標準みたいなのは知らない
988デフォルトの名無しさん:2012/09/21(金) 00:48:54.24
989デフォルトの名無しさん:2012/09/21(金) 02:16:11.94
【初心者歓迎】C/C++室 Ver.80【環境依存OK】
http://toro.2ch.net/test/read.cgi/tech/1348161305/
990デフォルトの名無しさん:2012/09/21(金) 06:10:45.91
>>989
おつ
991デフォルトの名無しさん:2012/09/21(金) 11:53:58.19
>>986
その理屈だと世界で一番ポピュラーな文字は漢字で、
一番ポピュラーな言語は中国語になってしまう。
992デフォルトの名無しさん:2012/09/21(金) 12:03:35.58
>>987
ISO/IEC 14882での小数点はドットだけっすよw
993デフォルトの名無しさん:2012/09/21(金) 17:39:49.17
>>989
おつうめ
994デフォルトの名無しさん:2012/09/21(金) 19:20:33.54
うめ
995デフォルトの名無しさん:2012/09/21(金) 20:56:28.35
青梅
996デフォルトの名無しさん:2012/09/21(金) 21:36:54.91
オーメン2/ダミアン
997デフォルトの名無しさん:2012/09/22(土) 00:10:37.71
うめ
998 忍法帖【Lv=40,xxxPT】(1+0:5) :2012/09/22(土) 01:28:45.67
蒼樹うめ

【初心者歓迎】C/C++室 Ver.80【環境依存OK】
http://toro.2ch.net/test/read.cgi/tech/1348161305/
999 忍法帖【Lv=40,xxxPT】(2+0:5) :2012/09/22(土) 01:29:18.07
梅ちゃん先生

【初心者歓迎】C/C++室 Ver.80【環境依存OK】
http://toro.2ch.net/test/read.cgi/tech/1348161305/
1000 忍法帖【Lv=40,xxxPT】(3+0:5) :2012/09/22(土) 01:29:51.89
うめてんてー

【初心者歓迎】C/C++室 Ver.80【環境依存OK】
http://toro.2ch.net/test/read.cgi/tech/1348161305/
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。