C++相談室 part105

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレに
お願いします。

前スレ
C++相談室 part104
http://toro.2ch.net/test/read.cgi/tech/1376714664/

このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.86【環境依存OK】
http://toro.2ch.net/test/read.cgi/tech/1379742800/

次期規格C++1yはこちら
C++11/C++1y 18
http://toro.2ch.net/test/read.cgi/tech/1365073520/

■長いソースを貼るときはここへ。■
 http://codepad.org/
 http://ideone.com/
2デフォルトの名無しさん:2013/09/29(日) 17:53:20.81
シンボル名等にhogeを使用することを
不快と感じる人がいます
無用な争いを避けるため、hogeの使用はなるべく控えて下さい
3デフォルトの名無しさん:2013/09/29(日) 18:02:09.23
>>2
基地外に敗北宣言
4デフォルトの名無しさん:2013/09/29(日) 18:16:21.88
別に当たり前のことだと思うけど。
禁止しないって挑発して
荒らされ続けてる方が負けだろ。
5デフォルトの名無しさん:2013/09/29(日) 18:18:44.45
特定のつづりをどうして禁止にする必要があるの?
コンピュータやコンパイラが誤動作でもするの?
6デフォルトの名無しさん:2013/09/29(日) 18:23:07.79
>>5
日本語読めないの?ばかなの?
「不快と感じる人がいます」
「不快と感じる人がいます」
「不快と感じる人がいます」
「不快と感じる人がいます」
世の中オマエが基準じゃねーんだよバカ
7デフォルトの名無しさん:2013/09/29(日) 18:26:45.23
見なければいいのに
8デフォルトの名無しさん:2013/09/29(日) 18:28:40.16
LLVM、C++1Y 標準ライブラリをフル実装
http://news.mynavi.jp/news/2013/09/27/027/index.html
9デフォルトの名無しさん:2013/09/29(日) 18:29:31.12
hogeと書くだけで誰かを不快に感じさせられるとかめっちゃ楽しいじゃん
hogeって書くだけでいいんだぜ
hogeって
10デフォルトの名無しさん:2013/09/29(日) 18:40:18.86
「傷つくのでやめて下さい」 弱者の立場を利用してどんな意見でも通そうとする “繊細チンピラ” が増加
11デフォルトの名無しさん:2013/09/29(日) 19:10:43.26
ヘイトスピーチ()されていると主張するあいつらと同じ立場の人間だろう
12デフォルトの名無しさん:2013/09/29(日) 19:15:25.69
hogeしばき隊の皆さん、ご苦労さまです
13デフォルトの名無しさん:2013/09/29(日) 19:22:12.50
その考えだとhogeコピペは荒らしではないな
14デフォルトの名無しさん:2013/09/29(日) 19:46:51.38
hogeコピペはhoge特会の朝鮮ヤクザ
15デフォルトの名無しさん:2013/09/29(日) 19:58:15.53
STLつかうと一気に実行ファイルサイズが10倍に?!

環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない

すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。

C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。
とかいうエラーが出るんだけどこれってどうすればいいの?

#include <stdafx.h>
後死ね。

言葉が悪いな。それで教えているつもりか。
まぁヒントぐらいにはなったな。
うむごくろう。
16デフォルトの名無しさん:2013/09/29(日) 20:03:56.65
>>4
スルーすれば良いだけだろが。
hoge使ったコード後に荒らしレスが付いてもそれスルーすれば問題ない。
hoge禁止にしたところで荒らしが正気に戻るわけじゃ無いし、荒らしは荒らしだ。
>>5
禁止することで荒らしが優越感に浸れる。
禁止しろ禁止する必要はないの議論を眺めて荒らしが優越感に浸れる。
そして次の優越感を求めて同じことを繰り返す。

禁止も推奨もせず、荒らしはひたすらスルーすればそれだけで良い。
17デフォルトの名無しさん:2013/09/29(日) 21:00:16.84
>>2
うっせえ long unko;
18デフォルトの名無しさん:2013/09/29(日) 21:00:39.85
hogeは日本の美しい伝統なのに止めれって朝鮮系スレだな
19デフォルトの名無しさん:2013/09/29(日) 21:07:07.67
hogeはヘイトスピーチと同じで朝鮮系が発狂するから禁止
奴らに基地っぷりはすごすぎるからね
ついでに2chは朝鮮系人のためのたまり場で朝鮮ルールが適用される
20デフォルトの名無しさん:2013/09/29(日) 23:12:37.19
Cは朝鮮のC
21デフォルトの名無しさん:2013/09/29(日) 23:13:13.01
Kじゃないのか
22デフォルトの名無しさん:2013/09/29(日) 23:21:31.15
これは恥ずかしいw いくら何でもwww
23デフォルトの名無しさん:2013/09/29(日) 23:55:19.32
hogeは捕鯨を推奨してると受け取られても仕方がないのでやめましょう
日本人は、やっぱり野蛮ですね
24デフォルトの名無しさん:2013/09/30(月) 00:21:26.52
std::vector<int>
ここからintを取り出すことって出来るかね
25デフォルトの名無しさん:2013/09/30(月) 00:22:57.20
取り出すって何だ
どういう動作になってほしいわけ?
26デフォルトの名無しさん:2013/09/30(月) 00:23:42.24
std::vector<> つ int
取り出しました
27デフォルトの名無しさん:2013/09/30(月) 00:32:51.22
std::vector<int>::value_type って意味か?
28デフォルトの名無しさん:2013/09/30(月) 00:41:26.95
>>27
あざっす
29デフォルトの名無しさん:2013/09/30(月) 00:43:46.15
そんなのあったのか
ただ使い所がわかんねえ
30デフォルトの名無しさん:2013/09/30(月) 00:56:11.02
>>23
代わりに whale 使えば?
31デフォルトの名無しさん:2013/09/30(月) 00:59:07.23
vector<int>をテンプレートの型引数に取って、その要素を返そうと思って
↓みたいに
template <typename T>
typename T::value_type Foo(T v)
{
32デフォルトの名無しさん:2013/09/30(月) 01:04:22.91
tab押してenter押したんですね、わかります

まあ使い所はわかった
33デフォルトの名無しさん:2013/09/30(月) 01:05:59.03
>>23
捕鯨は悪いことという前提を、我々は承認していません。

ストレートに2点お尋ねします。
・なぜ鯨を殺してはいけないのですか?
・なぜ人を殺してはいけないのですか?
殺してはいけないから、殺してはいけない、というような循環論法は相手をしません。

客観的な、つまりは敵対的な論客を論破できる、簡潔明瞭な説明を求めます。
2点目に、水も漏らさぬ完全な論理がないことは、つまり
より制限の厳しい1点目に答えられるわけがないと見なします。
34デフォルトの名無しさん:2013/09/30(月) 01:27:09.82
イスラム教
「自分が人から危害を受けたくなければ、誰にも危害を加えないことである。」(ムハンマドの遺言)

ユダヤ教
「あなたにとって好ましくないことをあなたの隣人に対してするな。」
(ダビデの末裔を称したファリサイ派のラビ、ヒルレルの言葉)、
「自分が嫌なことは、ほかのだれにもしてはならない」(『トビト記』4章15節)

ヒンドゥー教
「人が他人からしてもらいたくないと思ういかなることも他人にしてはいけない」(『マハーバーラタ』5:15:17)

イエス・キリスト
「人にしてもらいたいと思うことは何でも、あなたがたも人にしなさい」(『マタイによる福音書』7章12節)
「他人にしてもらいたいと思うような行為をせよ」という内容の倫理学的言明

黄金律(おうごんりつ、英: Golden Rule)
Wikipedia
35デフォルトの名無しさん:2013/09/30(月) 01:29:25.10
>>33
横レスですが、新日本クジラ研究会です。

クジラを殺すことが悪いのではなく、クジラが減る環境は人類の生存確率が
減る環境だからです。
つまり、人類を存続させるためにクジラを保護しようとしています。
クジラはある意味目安にすぎません。
大型であり、環境にナイーブであり、人類と同じ哺乳類です。

そもそも、環境保護は人類のエゴに基づく行動です。
もしも神様と通信できたなら、今すぐ環境保護をやめろと言われるでしょう。
いずれ人類が滅び、新しい種が覇権を握るのが自然の摂理だからです。

あなたは鯨を滅ぼしますか?
36デフォルトの名無しさん:2013/09/30(月) 01:31:06.03
こいつ、seikyou だろ?
37デフォルトの名無しさん:2013/09/30(月) 01:32:49.42
いいえ、新日本クジラ研究会です。
たった今できました。
会員は僕一人です。
38デフォルトの名無しさん:2013/09/30(月) 01:35:18.80
>>35
滅ぼすのはダメだろう。でも必要に応じて殺傷し食べるのは問題ないだろう
死刑のように、必要に応じて人間を殺しても問題ないのと同じでクジラも必要に応じて殺傷してよいはずだ
39デフォルトの名無しさん:2013/09/30(月) 01:36:29.38
実は俺も人間というのを食べてたくてね
40デフォルトの名無しさん:2013/09/30(月) 01:37:28.41
>>39
殺さずに肉だけ食べるなら問題ないはず
自分で肉を切り取ってもらえば傷害罪にも該当しないだろう
41デフォルトの名無しさん:2013/09/30(月) 01:57:11.61
>>35
「減る」とはどのくらいですか?

たとえばミンククジラは、総量に対してどのくらいがバランスよい負荷でしょうか?
研究職の方でしたらおわかりでしょうが、生物の「誕生」と「死」のバランスを崩すと
結果が絶滅あるいは異常発生、食物連鎖間に波及ということが起きます。
人類への影響もこの「波及」に含まれます。

ミンククジラの、全量はどのくらいで、年あたりどのくらい誕生し死すのが理想ですか?
全量は現状どのくらいで、年あたりどのくらい誕生し死んでいますか?
理想と現実の差はどうなっていますか?

追試可能の定量的な数値でお答え下さい。普通の人には聞けませんが、あなたは研究者。

死すべき量を人為的に本来より増やし、その差分をいただくのが養殖です。
いけすを使うか、海洋そのものを使うか、発育段階で切り替えるか、それは様々です。
この点で、養豚場の屠畜と、捕鯨は、何が違いますか?

あなたは人類を餓死させますか?
42デフォルトの名無しさん:2013/09/30(月) 02:08:27.62
>>41
申し訳ありません。
研究会は5分前に解散いたしました。
僕は今ではただの人なのです。

ただの人としてで良ければ会話に参加させていただきたいと思います。

僕は以前からずっと不思議だったのです。
西洋の人たちは自然に生きる生物を殺して食べることを野蛮でかわいそうといいます。
しかし、飼育した生物を殺して食べるのは当然と考えます。
日本人である僕には納得がいきませんでした。
食べられるために生まれてくるほうがずっと残酷です。

ところが、日本でいう建前と本音に基づき考えるとどうでしょう。
可愛そうというのが建前で、本音は利己主義です。
つまりすべてが自己の利益のための行動だったら。
家畜は殺しても生態系への影響がない。
つまり食べていいのです。
飼育して食べるのは人類の存続可能性という点でエコロジーなのです。
43デフォルトの名無しさん:2013/09/30(月) 02:09:41.48
おまえらhogeネタで盛り上がりすぎ。ワロタ
44デフォルトの名無しさん:2013/09/30(月) 02:49:33.54
>>42
解散されたのですか、それは大変でしたね。
で、解散された事実はどこかに公示または報道されていますか?
いい加減なこと言われたら困りますよ! (これが失礼なら反駁して下さい)

北米大陸で太古から自然に生きてきたネイティブを食べもせずに(そう信じていますが)
殺すのは可哀想ではないんですかね、あの人たちには。
アフリカ大陸で太古から自然に生きてきたネグロイドを食べもせずに
殴打・致死させるのは可哀想ではないんですかね、あの人たちは。
日本列島で太古から自然に生きてきた黄色い猿の非戦闘員を
焼夷弾と原子爆弾で焼き殺すのは可哀想ではないんですかね。
ベトナムで枯れ葉剤を使って見るも無惨な子供が大勢理不尽になくなりました。
これらすべてがキリスト教の神が命じたことなら、
イエスは悪魔でキリスト教はカルト教団です。

アメリカは我が国以上に大量の鯨を殺害し、不要部分を捨てていました。
我が国の捕鯨産業は「捨てるところがない」ことを誇っていました。
ビキニ環礁の水爆でどのくらいの鯨が死んだのかご存知ですか?
■ 可 哀 想 で は な か っ た ん で す か ! ? ■

もう一度聞きます。
鯨は可哀想なのか減るのか、もはや論点が二転三転しています。
あなたがたは結局、牛肉を売りつけたいだけじゃないんですか?
動物質だけではありません。モンサントの脅威も我々は警戒しています。

「元」研究者さん、あなたが失職した本当の理由は何でしょうかね? これは皮肉です
45デフォルトの名無しさん:2013/09/30(月) 03:16:46.86
>>44
可愛そうなのか減るのか、そして宗教との関連。
実はこのことについても考えたことがあるのです。

ところでもう寝るので、続きは明日帰ってきてから書きたいと思います。
46デフォルトの名無しさん:2013/09/30(月) 03:58:05.87
>>45
おまえが飼ってる犬でも猫でもインコでも、食ってからのコメントが聞きたい
本当にそれが当然で、野生動物を殺すことよりも理性的なのか
イエスさんが、そうしろと命じたのかどうか?

アインシュタインは言った「月は私が見ているときにしか、そこにないのかね」と
あなたたちはイエスがそう命じるから、1秒まえまでの家族の血肉をすするのか

ジョークでしたじゃ済まんぞ
おのれら原爆を悔いるどころか誇っとんのやろ
で、イランや北朝鮮が同じことをするのはいかんのやったなあ
高出力型の弾頭が散布界の小ささによって役割を失うのは周知の事実や

「元」研究者とはいえ、勤続年数まで5秒とは言わんだろう
まともな答えをせにゃ、ここには「フルボッコされたカス」と記録されるだけやぞ

身元も割れやすくなってるから、お得意さんにも迷惑かかるわなあ
このへんの感覚が壊れてるやつを俺は人間と思っていない
47デフォルトの名無しさん:2013/09/30(月) 04:03:41.42
どうでもいいけど上げんなカス
48デフォルトの名無しさん:2013/09/30(月) 04:15:39.95
なーぜー? (かなりふざけた口調
荒らしがふせげるのーお? ねーぼーやあ
ぼーやみたいな情弱がだまったからって何にどう役立つのかねー

君も京大の霊長類研究所の方だろ、察するにwww
49デフォルトの名無しさん:2013/09/30(月) 06:15:39.66
>>47←こいつきっしょ
50 ◆QZaw55cn4c :2013/09/30(月) 06:34:03.01
気晴らしにしてももっと痴的に

>>44
>家畜は殺しても生態系への影響がない。つまり食べていいのです。飼育して食べるのは人類の存続可能性という点でエコロジー
◎85点
51デフォルトの名無しさん:2013/09/30(月) 07:36:11.13
>>49←こいつきっしょ
52デフォルトの名無しさん:2013/09/30(月) 08:38:36.25
>>51
なんでキモい言われたか気付いてないんだろ?
だっせw
53デフォルトの名無しさん:2013/09/30(月) 09:07:38.30
>>50
家畜って育てるだけで環境負荷が結構あったよね。
温室効果ガスとしてのメタンは家畜の牛が結構な量を排出してたはず。
54デフォルトの名無しさん:2013/09/30(月) 10:32:37.70
温室効果ガス出しちゃいけないの?
必要なら別に出してもいいだろバーカ
55デフォルトの名無しさん:2013/09/30(月) 10:41:47.10
お前らいい加減にしとけ
ここはム板だ
プログラム以外の話をしたいのなら他の板に行け
56デフォルトの名無しさん:2013/09/30(月) 10:47:03.26
なんでキモい言われたか気付いてないんだろ?
だっせw
57デフォルトの名無しさん:2013/09/30(月) 11:19:51.35
hogeは伸びる
58デフォルトの名無しさん:2013/09/30(月) 11:32:23.30
class A{
A(void)
{}
}

class B{
B(void)
{}
}
の違いを教えてください
59デフォルトの名無しさん:2013/09/30(月) 11:33:20.19
ミスりました!
class A
{
A)
{
}
}

class B
{
B(void)
{
}
}
の違いです
60デフォルトの名無しさん:2013/09/30(月) 11:53:52.51
A()とB(void)の違いってことかな
何も違わない
61デフォルトの名無しさん:2013/09/30(月) 12:19:55.13
>>59
書き込むボタンを押す前に3回冷水をかぶれ
62デフォルトの名無しさん:2013/09/30(月) 17:12:50.85
引数なしのコンストラクタでクラスhogeをインスタンス化するとき、
hoge hoge_(); とすると関数宣言との区別がつかないためエラーになると思いますが、
コンパイラあるいはC++の規格によってはエラーにならない場合もあるのでしょうか?
63デフォルトの名無しさん:2013/09/30(月) 17:27:41.79
ねーよ
64デフォルトの名無しさん:2013/09/30(月) 17:54:48.21
>エラーになる

そんなコンパイラあるの?
65デフォルトの名無しさん:2013/09/30(月) 18:01:17.30
hoge非対応コンパイラならなるんじゃないのか
66デフォルトの名無しさん:2013/09/30(月) 18:30:43.40
あるクラスのfirendクラス中にネストクラス書いた場合、そのネストクラスもfriendでいいの?
VC++6だとコンパイル通らなかったけど・・・
http://ideone.com/p9KSV8
67デフォルトの名無しさん:2013/09/30(月) 19:12:06.39
>>60
ありがとうございます!
68デフォルトの名無しさん:2013/09/30(月) 20:14:51.16
>>66
自己解決、C++11ならOKなのね
69デフォルトの名無しさん:2013/09/30(月) 20:51:11.15
IDEが悪いのか、コードが悪いのか、ライブラリが悪いのか切り分けすらできていないので、
とりあえずここに書きます。


環境: eclipse Juno + CDT
症状: 構造体のメンバーが同じメモリアドレスを参照する

typedef struct test_s{
char* errorCode;
char* attrib[MaxNum];
char users[buffSize];
char data[buffSize];
char DN[MaxHeaderByte];
char CN[MaxHeaderByte];
// char hogehoge[buffSize];
}TEST_S;

上記のような構造体を作り、インスタンス化すると、
DNとCNの参照先メモリアドレスが同一になり、CNを変えるとDNも変わります。

そもそも、そんなことってあり?
構造体で宣言した直後で確認をとっておりますので、DNにCNのポインタが入るなどの行為は
行われていないはずです。

だれか助けてください



補足:
その直前に意味不明なsegmentation fail が起こっておりました。
確実に問題のないインタネット上のサンプルでも( たとえば、初心者向けstrcpy のサンプルコード)
などでも、がんがんprintf あたりで発生してました。現在はなぜだか直っている模様
70デフォルトの名無しさん:2013/09/30(月) 20:53:50.25
eclipseのデバッガなんてその程度よ
71デフォルトの名無しさん:2013/09/30(月) 20:55:49.73
VCで試してみたら
72デフォルトの名無しさん:2013/09/30(月) 21:00:51.46
>>69
コードは問題ないね
http://codepad.org/trifD8VE
73デフォルトの名無しさん:2013/09/30(月) 21:21:28.50
>>71
>>72
ありがとう。
VC++では問題無しです

まあ、なんだかって感じですが

//順番変えただけ
char* errorCode;
char* attrib[MaxNum];
char CN[MaxHeaderByte];
char users[buffSize];
char data[buffSize];
char DN[MaxHeaderByte];

だとうまくいくw

プログラムでも同じ症状なので、コンパイラあたりが匂うけど、
デバッガではないような気がします

ライブラリってことはないとは思うんですが、
segumentation 違反のこともあるので、うむむです。
74デフォルトの名無しさん:2013/09/30(月) 21:25:21.44
pthreadのスタックサイズが、小さすぎるとか
75デフォルトの名無しさん:2013/09/30(月) 22:51:16.28
>>74
調べた。
なるほどです。
POSIXではなく、Windowsアプリなんだけど、関係ないとも言い切れないですねぇ

コンパイルオプションかなんかで指定するんでしょうか?
76デフォルトの名無しさん:2013/09/30(月) 23:09:08.19
>>69
定数の値はどうなってるの?gccならサイズ0の配列を定義可能だぞ
77デフォルトの名無しさん:2013/09/30(月) 23:57:43.90
>>76
ちょいと大きめです。
4096を基本で実行しているんですが
それでもエラーが出ます。

本来なら64kbyte程度は取りたいと思っていますが、
78デフォルトの名無しさん:2013/10/01(火) 00:00:07.41
>>77
コンパイラ何使ってんの?
79デフォルトの名無しさん:2013/10/01(火) 00:07:49.26
ヒープにとってみれば?
80デフォルトの名無しさん:2013/10/01(火) 00:43:39.99
一度クリーンして再ビルド
81デフォルトの名無しさん:2013/10/01(火) 01:10:47.14
>>80
クリーンは、これでもか、ってほどやってる

>>79
なる
ちょっとやってみる

>>78
MinGW のgcc
82デフォルトの名無しさん:2013/10/01(火) 01:54:39.43
#undef MaxHeaderByte
#define MaxHeaderByte 0
83デフォルトの名無しさん:2013/10/01(火) 01:58:33.95
sizeof(struct test_s)
sizeof(TEST_S)

この2つを見てからでないと信用出来ないw
8462:2013/10/01(火) 02:04:29.37
>>63-65
え、エラーにならないってことですか?
コンパイラはGCC4.7.2ですが、以下のコードは最初の@が何も出力されません。
関数宣言とみなされるからだと思ってたんですが、違うのですか?

#include <iostream>
using namespace std;

class hoge
{
public:
hoge() { cout << "hoge" << endl; }
hoge(int i) { cout << "hoge(int i)" << endl; }
};

int main()
{
hoge obj1(); // @何も出力されず
hoge obj2; // Ahoge と出力
hoge obj(1); // Bhoge(int i) と出力
}
85デフォルトの名無しさん:2013/10/01(火) 02:40:08.27
で?それがお前の環境じゃエラーになるの?
8662:2013/10/01(火) 03:14:41.22
すみません、間違えました!>>84のコードはコンパイルエラーにはなりません。
実は人からもらったソースコードをいじってて、引数なしのコンストラクタを hoge obj1();
などとインスタンス化するとよく分からないコンパイルエラーになり、調べてみた次第です。

というわけで、質問を以下のように変更させてください。

「引数なしのコンストラクタを呼んでインスタンス化する際は、 hoge obj1(); などと
()を付けては駄目で、単に hoge obj1; とする」というのは、C++の仕様でしょうか?
87デフォルトの名無しさん:2013/10/01(火) 07:05:31.35
>>86
"C++の"とか言う割に、new使うって発想ないんだなあ
何がやりたいんだろう
88デフォルトの名無しさん:2013/10/01(火) 07:21:32.71
仕様を聞きたいんじゃね?
89片山博文MZコスモ ◆T6xkBnTXz7B0 :2013/10/01(火) 07:27:53.39
stdafx.hを使うメリットって何ですか?
90デフォルトの名無しさん:2013/10/01(火) 07:50:26.31
> C++の仕様でしょうか?
当たり前だろ。バカ。

コンパイラはお前より一億倍C++の仕様に詳しいので、コンパイラがエラーを出すなら、
それはC++の規格違反である可能性が極めて高い。
91デフォルトの名無しさん:2013/10/01(火) 07:55:24.14
>>87
今時 C++ で生 new なんてほとんど使わないと思うが...
92デフォルトの名無しさん:2013/10/01(火) 08:34:48.97
newはoldになったのだ…
93デフォルトの名無しさん:2013/10/01(火) 09:31:15.10
C++11だと、hoge obj{}; hoge obj{1};って書けるようになるから、hoge obj; hoge obj(1);が
非対称な感じでイヤーンな人は不満解消すんじゃね?w
94デフォルトの名無しさん:2013/10/01(火) 09:54:46.42
>>89 事故解決
95デフォルトの名無しさん:2013/10/01(火) 10:20:59.25
>>93
誰もhoge使うような気違いにはきいてないから
hoge厨は黙ってろ
96デフォルトの名無しさん:2013/10/01(火) 10:58:08.30
C++11書いてる人でhoge obj{}、hoge obj{1}って書いてる人どれくらいいるんだろう
97デフォルトの名無しさん:2013/10/01(火) 11:05:34.77
>>96
よう恥知らず。
98デフォルトの名無しさん:2013/10/01(火) 11:18:11.27
>>96
そもそもC++11で書いてる人が殆どいない気がする。
でも、C++11が当たり前になったら初期化子といえば{}ってくらい定着すると思う。
初期化子リストとも統一感あるし、見目麗しいじゃないかw
99デフォルトの名無しさん:2013/10/01(火) 11:24:22.53
お前ら仕事で11使ってるの?
100デフォルトの名無しさん:2013/10/01(火) 11:25:12.87
>>96
hogeもそんな書き方してるのもお前だけだよ
他と違う俺カッケーとか思ってんの?
101デフォルトの名無しさん:2013/10/01(火) 11:32:37.96
>>99
C++14が出る頃にはC++11も使われてるかもな
102デフォルトの名無しさん:2013/10/01(火) 12:31:21.43
NG推奨:hoge

半角にして登録してください。
103デフォルトの名無しさん:2013/10/01(火) 12:51:49.94
とっくにしてる
104デフォルトの名無しさん:2013/10/01(火) 13:03:39.27
>>102
全角で書く意味がわからん
105デフォルトの名無しさん:2013/10/01(火) 13:23:09.92
>>104
半角で書いたら>>102もNGされてしまう
106デフォルトの名無しさん:2013/10/01(火) 13:23:18.19
hoge回避で荒らしがいなくなるのならそれでいいよ
別にこだわりもないし。
くだらんことでスレ使うなよ
107デフォルトの名無しさん:2013/10/01(火) 13:24:44.39
NG推奨じゃなくて必須だろ
108デフォルトの名無しさん:2013/10/01(火) 13:32:09.91
そもそも何で意味の分からないhogeを使うのか意味不明
メタ構文変数ならmetakoubunhensuと書けよ
109デフォルトの名無しさん:2013/10/01(火) 13:40:45.82
意味が分からないから使うんだろ
110デフォルトの名無しさん:2013/10/01(火) 14:18:03.47
>>109
意味が分からないってそう意味じゃないと思う。
特定の使用目的のない部屋の入り口のドアに「hoge」って書いてあったら意味が分からないだろう、
だとしたらそこは「空き部屋」と書いておくべきだ。
特定の使用目的がないのならそのことを明示しておかなければならない。
111デフォルトの名無しさん:2013/10/01(火) 16:10:57.25
2つのstd::set<DATA>を合併させる一番簡単な方法は?
112デフォルトの名無しさん:2013/10/01(火) 16:14:06.76
std::mapの合併もお願いします。
113デフォルトの名無しさん:2013/10/01(火) 16:35:31.68
>>109
意味が分からない物をどうやって使うんだ?
識別子を付与して再利用してる時点で中身の意味はわかってるだろう
114デフォルトの名無しさん:2013/10/01(火) 16:43:26.95
>>111,112
obj2.insert(obj1.begin(), obj1.end());
115デフォルトの名無しさん:2013/10/01(火) 16:53:44.45
>>114
ありがとうございます。

C++10のマニュアル(chm形式)がダウンロードできる場所を教えて下さい。
116デフォルトの名無しさん:2013/10/01(火) 17:52:18.01
>>109=意味が分からないものを使う基地害
117デフォルトの名無しさん:2013/10/01(火) 21:36:10.34
アンチhoge厨に構うな。
どうしても構っちゃうよ!って奴はNGにでもしとけ。
118デフォルトの名無しさん:2013/10/01(火) 22:14:19.56
>>117
お前に命令される筋合いはない
119デフォルトの名無しさん:2013/10/01(火) 22:28:53.88
>>118
お手!
120デフォルトの名無しさん:2013/10/01(火) 22:53:41.01
>>105
いや、だから >>102 を NG してる奴が >>102 見る必要あるんか?
121デフォルトの名無しさん:2013/10/01(火) 23:04:21.41
>>118
house
122デフォルトの名無しさん:2013/10/01(火) 23:36:20.14
h o g e
123デフォルトの名無しさん:2013/10/01(火) 23:41:30.56
>>120
お座り!
124デフォルトの名無しさん:2013/10/02(水) 00:13:16.71
>>98
初期化子リストと統一感あるから困るところもあるけど
まあそんなもんか
125デフォルトの名無しさん:2013/10/02(水) 02:31:12.95
C++11が当たり前になるのはいつなんだ
仕事ではお目にかかったことないわ
126デフォルトの名無しさん:2013/10/02(水) 02:43:39.10
プライベートではC++11で書いてて、仕事のプロジェクトではC++03前提だけど、そのコンパイラは
C++0x以上C++11未満をサポートしてるなんて場合、何がOKで何がNGなのかこんがらがったり
しないんだろうか?
127デフォルトの名無しさん:2013/10/02(水) 02:50:13.64
Hoge++11
128デフォルトの名無しさん:2013/10/02(水) 03:08:07.65
>>126
悩んだらC++0xも封印してC++03とかで書けば良いんでない?
仕事のプロジェクトではC++0x〜C++11とか全員が把握してる保証がないと厳しいし、
C++0xっていう策定段階の仕様を業務でバリバリ使うってのも違和感があるんだが。
# そして只のC+αな言語として使われる、と。
129デフォルトの名無しさん:2013/10/02(水) 03:16:33.21
C++0x時代が長かったから・・・
130デフォルトの名無しさん:2013/10/02(水) 03:22:52.70
普通はC++03が前提ならコンパイラオプションでそう指定する。
だからなにが良くてなにが悪いかはコンパイラ様が教えてくれる。
混乱などしない。黙ってコンパイラ様のいうことを聞いてればいいw
131デフォルトの名無しさん:2013/10/02(水) 13:06:28.47
そういえば先日出たVisual C++ 2013 RCは
おまえらスルーなの?
132デフォルトの名無しさん:2013/10/02(水) 14:02:02.73
普通に使ってる
133デフォルトの名無しさん:2013/10/02(水) 14:10:10.89
使ってるけど、話題にするほどのネタがない>VC++13RC
C++11のサポート不完全なままだし、VSスレでもう散々愚痴った後だし('A`)
134デフォルトの名無しさん:2013/10/02(水) 19:04:55.08
3年目にして initializer_list がようやくサポートされたんでしょ?
135デフォルトの名無しさん:2013/10/02(水) 19:17:08.64
今さらVC++6やらされて涙目だったけど、古いboostとSTLPort使ったら捗った
136デフォルトの名無しさん:2013/10/02(水) 22:03:51.87
1からシステムを作る話が出てるのですが、
C++とC#でどちらにしようか決めかねています
C#の方が簡単みたいでいずれ.netもOSと統合するとかなんとか
今後C#の方が需要が高くなるんでしょうか?
私としてはC++の方が汎用性もあっていいと思うのですが
今後の事を考えたらどっちがいいのかなぁ?
137デフォルトの名無しさん:2013/10/02(水) 22:05:49.83
何のシステムかによるでしょw
138デフォルトの名無しさん:2013/10/02(水) 22:34:26.40
横から質問ですが、C#の1つしか継承できない仕様は実際問題になったりしないんですか?
単にそういうもんだと思って使うだけの話ですか?
139デフォルトの名無しさん:2013/10/02(水) 22:35:55.12
多重継承なんて何に使うの。インターフェースでいいじゃん
140デフォルトの名無しさん:2013/10/02(水) 23:14:41.04
多重継承はミックスインに使う
非常に有用な機能
141デフォルトの名無しさん:2013/10/02(水) 23:22:17.38
多重継承っていうとPowerPlantってイメージ
142デフォルトの名無しさん:2013/10/03(木) 00:27:18.93
>>136
C++を汎用性がーという理由で使うと汎用性以前にバグとメモリリークで死ぬ
C++の生きる領域は、大規模開発するけど、どうしてもパフォーマンスに妥協できないという場面

C#は素人に優しくプロに便利だが、実質Microsoft縛りだし、
パフォーマンスは限界がある
生産性と安全性はC++と比べてはいけないレベル

C++/CLIは現実と戦いすぎなのでさっさと滅びろ

>>138
多重継承が最適解な特定の問題領域でだけ、ちょっと困る
普段は気にもしない
143デフォルトの名無しさん:2013/10/03(木) 00:33:39.96
>>142
メモリリークはスマポ使えばいいじゃない
144デフォルトの名無しさん:2013/10/03(木) 02:42:10.65
C#が遅いのは.netのせい?それとも言語仕様的にしょうがないの?
145デフォルトの名無しさん:2013/10/03(木) 02:52:46.25
そういえばJavaがC++より遅いと書いたら「証拠を示せ」と発狂している奴がいたな
146デフォルトの名無しさん:2013/10/03(木) 03:32:41.00
ファンクタを受けとる関数はヘッダに公開しないといけないのですか? 公開しないで隠蔽する何かいい方法ありませんか?
147デフォルトの名無しさん:2013/10/03(木) 03:58:44.99
うーん、ファンクタじゃなく関数ポインタで受け取るしかないような
148デフォルトの名無しさん:2013/10/03(木) 05:50:48.07
独学なんですがプロセスメモリ検索の方法が今いち分かりません
サーチ部分を以下の用に組んだのですがどうしても遅くなってしまいます
高速でメモリサーチするにはどうしたらいいんでしょうか

--------------------------------------------
DWORD Address = 0x2AF00000; //検索開始アドレス
INT i; //ループ用
DWORD MemoryBuff;

for(i=0;i<10000000;i++)
{
ReadProcessMemory(hProc, (LPVOID)(Address+i), &amp;MemoryBuff, 4, NULL);
if (MemoryBuff == 0xD6FA88){
cout <<Address+i << endl;
}
}
149デフォルトの名無しさん:2013/10/03(木) 08:30:07.19
>>146
std::function や boost::function を使う。
150デフォルトの名無しさん:2013/10/03(木) 09:29:23.67
>>149
質問主じゃないけど、できたわサンクス。勉強になった
http://ideone.com/o2Ltut
151デフォルトの名無しさん:2013/10/03(木) 09:34:41.90
>>148
目的がわからないから何とも言えんが、
WindowsならAPIで特定の種類の使用領域一覧を頂いてから、
狙い撃ちで検索するとか。

詳細がほしいならWin32APIスレでどーぞ。
152デフォルトの名無しさん:2013/10/03(木) 10:41:00.52
WTLのウインドウみたいなのって多重継承以外で解決できるの?
153デフォルトの名無しさん:2013/10/03(木) 11:28:32.62
委譲でなんとかすんじゃね
154デフォルトの名無しさん:2013/10/03(木) 18:28:15.10
>>150
function使わなくてもいいなそれ
http://ideone.com/sW0Bom
155デフォルトの名無しさん:2013/10/03(木) 22:44:22.60
>>154
なんでtestの実装を隠蔽してんだよcall_eachの実装を隠蔽しろよw
156デフォルトの名無しさん:2013/10/04(金) 05:22:43.97
http://ideone.com/eSoskg
call_each_impl いらなくね?
157デフォルトの名無しさん:2013/10/04(金) 07:01:03.37
>>155
??
158デフォルトの名無しさん:2013/10/04(金) 12:26:59.84
>>157
> ファンクタを受けとる関数はヘッダに公開しないといけないのですか? 公開しないで隠蔽する何かいい方法ありませんか?
154はファンクタを受けとる関数(call_each)がテンプレート関数として公開されてる。
159デフォルトの名無しさん:2013/10/04(金) 12:29:10.77
このあたりで勘違いしたType erasure厨が湧く予感
160デフォルトの名無しさん:2013/10/04(金) 12:37:12.07
単因子論か、難しいな
161片山博文MZコスモ ◆T6xkBnTXz7B0 :2013/10/04(金) 17:51:19.58
162デフォルトの名無しさん:2013/10/04(金) 17:56:22.87
PCがぶっ壊れた
163デフォルトの名無しさん:2013/10/04(金) 18:10:53.85
同じところにソースとしてもっと適切なアーカイブあっただろ・・・
164デフォルトの名無しさん:2013/10/04(金) 19:34:18.24
165デフォルトの名無しさん:2013/10/04(金) 20:04:08.32
せっかく作ったのに無駄骨過ぎて糞わろたwwww
166片山博文MZコスモ ◆T6xkBnTXz7B0 :2013/10/04(金) 21:34:39.44
下の方が新しかったのか、間違えた。作り直しだ
167デフォルトの名無しさん:2013/10/04(金) 22:28:36.41
この人電子ゴミ作るのが好きなの?
つーか隔離スレから出てくるな
168デフォルトの名無しさん:2013/10/04(金) 22:40:31.10
電子ウンコ製造機
169デフォルトの名無しさん:2013/10/04(金) 23:05:46.25
自動運子マシン
170デフォルトの名無しさん:2013/10/05(土) 00:48:50.93
片、ほげやったんだ
171デフォルトの名無しさん:2013/10/05(土) 03:11:38.23
void foo(const int* p);
int bar();
があったとして、
foo(&bar());
はテンポラリアドレスアクセス?
void foo(const int& a);
にして
foo(bar());
にすれば安全?
172デフォルトの名無しさん:2013/10/05(土) 03:29:19.42
まずコンパイルが通るコードを貼れ
後者の質問はYes
173デフォルトの名無しさん:2013/10/05(土) 03:32:40.13
例えば、
void foo(const int* p)
{
printf("%d",*p);
}
int bar(){return 0;}

foo(&bar());
とか?
174デフォルトの名無しさん:2013/10/05(土) 03:50:40.08
一つ前のレスも読めないのかhoge/foo/bar使いは
175デフォルトの名無しさん:2013/10/05(土) 11:35:39.28
どうせVCでも使ってるんだろ
176デフォルトの名無しさん:2013/10/05(土) 12:26:33.49
>>175
自己紹介乙w
177デフォルトの名無しさん:2013/10/05(土) 16:08:02.95
Visual C++はコンパイルエラーになるから違うな
178デフォルトの名無しさん:2013/10/05(土) 16:11:31.95
>>175
C++の標準がClangの状況でVCって奴は非常にすくないからな
Winの標準のC#でやれば良いのにな
179デフォルトの名無しさん:2013/10/05(土) 16:13:03.11
>>178の日本語の意味がわからない
180デフォルトの名無しさん:2013/10/05(土) 16:21:41.79
>>179
祖国に帰れば良い
181デフォルトの名無しさん:2013/10/05(土) 16:31:39.71
>>180
>日本語の意味がわからない
日本人なら意味が分らないってレスだけど
在日人のhoge基地は"日本語の意味"ってなるからな。
日本語って書く時点で在日だし。
182デフォルトの名無しさん:2013/10/05(土) 16:35:16.33
>>181
お前が在日という事は良く分かった
だから帰れ
183デフォルトの名無しさん:2013/10/05(土) 16:43:06.86
ネトウヨは巣に帰れ
184デフォルトの名無しさん:2013/10/05(土) 16:43:50.07
図星か
朝鮮人www
185デフォルトの名無しさん:2013/10/05(土) 17:02:49.04
日本人なら
>日本語の意味がわからない
ではなく
意味がわからない
って書くよな。
つまり>>179は日本語を母国語としな人ってことだよな
186デフォルトの名無しさん:2013/10/05(土) 17:05:14.26
日本語として成立はしているが意味が分からない
じゃなくて
日本語として成立しているように思えない
ってことだろ
187デフォルトの名無しさん:2013/10/05(土) 17:06:22.89
わたし日本語わりません

マネーマネーマネー
188デフォルトの名無しさん:2013/10/05(土) 17:11:06.29
屁理屈はどうでもいいから日本から出てけやゴミ虫チョン
189デフォルトの名無しさん:2013/10/05(土) 17:11:10.35
>C++の標準がClangの状況

これはどういう意味なんだ?
190デフォルトの名無しさん:2013/10/05(土) 17:12:55.56
>>189
在日には理解できない。知り合いの日本人に聞いてね
191デフォルトの名無しさん:2013/10/05(土) 17:16:41.35
そうかここ半年ほどム板の治安が悪いと思ってたら朝鮮人Gが湧いていたのか
192知り合いの日本人:2013/10/05(土) 19:39:20.92
標準の意味を崩して使ってるような。。。
193デフォルトの名無しさん:2013/10/05(土) 20:22:20.33
ようなって、おまえ日本人か? 
194デフォルトの名無しさん:2013/10/05(土) 20:26:51.28
疑問符を半角で打つ奴は朝鮮人
195デフォルトの名無しさん:2013/10/05(土) 21:49:37.39
>>178が正しい日本語を使えない(=在日の可能性が高い)ことは間違いない
196デフォルトの名無しさん:2013/10/05(土) 22:07:16.66
プログラマは底辺職業って言われるだけあって、日本語が禄にできない在日でもなれる職業になっているからな
日本語が駄目な在日、基地外、低脳でもなれるって
どうしてこうなったんだ
197デフォルトの名無しさん:2013/10/06(日) 02:00:07.69
おまえ「日本語が禄にできない」て
それ漢字間違ってるから
198デフォルトの名無しさん:2013/10/06(日) 06:14:08.02
ロクサーヌ」(Roxanne)は、ポリスによる曲であり、1978年にシングルとして発売
199デフォルトの名無しさん:2013/10/06(日) 10:58:51.99
c++でado.netを使わずに(.netの機能を使わずに)
sqlserverを操作したいのですが、ado.net関連の参考サイトしか見つからずにいます
主にsqlserverに接続して大量のデータを更新したいと思っています。
sqlserverにあるテーブル同士ではなく、別の場所にあるaccessにローカルテーブルとして
データを持っているので、accessからデータを取ってきて
一件ずつ更新する方法しかないのかと思っているのですが、
何かいい方法がありますでしょうか?
sql narive client なるものがあるようですが、
実際ado.netを使わない場合、どのような手法がとられているのでしょうか?
200デフォルトの名無しさん:2013/10/06(日) 11:01:16.49
まず実装言語を見直すことだね
201デフォルトの名無しさん:2013/10/06(日) 13:37:41.80
>>199
ODBCじゃだめなの?
202デフォルトの名無しさん:2013/10/06(日) 18:15:31.64
なんでこんな殺伐としてんだろうなこのスレ
ここの連中はLinux板のくだ質住民の爪の垢でも煎じて飲めばいいよ
203デフォルトの名無しさん:2013/10/06(日) 18:25:29.27
ここはwin32api、C/C++スレよりずーっと良いよ
これらのスレ見るとプログラムやっている奴には基地が多いって実感する
204 ◆QZaw55cn4c :2013/10/06(日) 19:13:23.87
そうだね
205デフォルトの名無しさん:2013/10/06(日) 23:20:54.33
>>202
ID漏れの一件以来、ニュー速あたりからタバンに大勢逃げ込んでる。
206デフォルトの名無しさん:2013/10/07(月) 09:16:37.37
タバン?
他板の読み間違い?
207デフォルトの名無しさん:2013/10/07(月) 09:36:51.37
タイタ大迷惑だな
208片山博文MZコスモ ◆T6xkBnTXz7B0 :2013/10/07(月) 13:14:10.39
C++ reference (CHMファイル)ができたよ。
https://dl.dropboxusercontent.com/u/72753355/cppreference-20130510-0.zip
209デフォルトの名無しさん:2013/10/07(月) 14:37:17.13
ttp://www.google.com/webhp?q=site:cppreference.com+%22
をブクマークしとけばいいだけの話
210デフォルトの名無しさん:2013/10/07(月) 15:21:39.59
まあWebブラウザより速いしね
211デフォルトの名無しさん:2013/10/07(月) 15:39:30.63
消されるかもしれないから落とした方が
それより日本語訳しろよ
212デフォルトの名無しさん:2013/10/07(月) 15:56:56.47
どうせクソみたいな訳にしかならんから、英語のままのほうがマシ
213デフォルトの名無しさん:2013/10/07(月) 16:07:28.48
こういう仕事が出来るだけ片山はマシだろ
Qなんか本当に糞だぞ
214デフォルトの名無しさん:2013/10/07(月) 16:35:02.37
機械翻訳できるならやってほしい
さらに両方を縦繋ぎにできれば和訳で大筋を掴んでから英語を読むという素敵なことができる
215デフォルトの名無しさん:2013/10/07(月) 18:41:55.75
>>208
片基地外、chmにして勝手に不特定多数に配布してよいのか
216デフォルトの名無しさん:2013/10/07(月) 19:10:43.74
面白そうだから通報しとくw
217デフォルトの名無しさん:2013/10/07(月) 19:26:53.40
CC BY-SAだろアホが
218デフォルトの名無しさん:2013/10/07(月) 19:27:41.06
害基地はこえーな
219デフォルトの名無しさん:2013/10/07(月) 19:29:33.43
>>215-216
基地外晒し上げ
220デフォルトの名無しさん:2013/10/07(月) 19:54:05.94
>>205
タリバンに見えた
221デフォルトの名無しさん:2013/10/07(月) 22:46:26.23
実質、タリバンと同じ連中じゃない
222デフォルトの名無しさん:2013/10/08(火) 06:32:20.54
質問です

C++11より導入された<thread>のsleep_for()は精度的にはどんなもんでしょうか
精度を気にするならマルチスレッドにしてもnanosleep()のほうが無難ですかね
ちなみに環境はlinux(art-linuxというリアルタイムOS)を利用しています

別スレのほうが適していれば誘導お願いします
223デフォルトの名無しさん:2013/10/08(火) 06:49:01.48
ミリセコンドはあるんじゃね
224デフォルトの名無しさん:2013/10/08(火) 07:00:38.72
こいつはsleep_forの引数がなんだとおもってるんだろう
225デフォルトの名無しさん:2013/10/08(火) 08:13:27.03
>>222
各APIの精度って時点で環境依存だしコンパイラでは把握できないだろ。
リアルタイム用途ならAPIリファレンス読んで自分で選べば良いかと。
226デフォルトの名無しさん:2013/10/08(火) 08:56:58.23
>>225
>コンパイラでは把握できない
why?
227デフォルトの名無しさん:2013/10/08(火) 09:29:25.52
struct hoge
{
enum{ foo = 111 };
};
hoge h;
char c[ h.foo ];
int main()
{
hoge o;
char d[ o.foo ];
}
gccだとcがダメでdがOKでした
vc2010だとcもdもOKでした。どれが正しいですか
228デフォルトの名無しさん:2013/10/08(火) 09:34:16.30
エラー張れよ
229デフォルトの名無しさん:2013/10/08(火) 09:41:42.69
array bound is not an integer constant
230デフォルトの名無しさん:2013/10/08(火) 09:44:22.76
231デフォルトの名無しさん:2013/10/08(火) 09:44:45.51
>>227
なぜ配列の大きさを
hoge::foo
にしないの?
232デフォルトの名無しさん:2013/10/08(火) 09:47:16.89
>>231
しないからです
233デフォルトの名無しさん:2013/10/08(火) 12:04:36.46
if(hoge){
std::thread th(func);
}
等とすると折角建てたスレッドの変数が
スコープを抜けると共に死んでしまうので困っています

スレッドを建てるかどうかを選択するのが目的です
どうするのが正解なんでしょうか
234233:2013/10/08(火) 12:22:45.29
ひとまず
std::thread th;
if(){
std::thread tmp(func);
th=std::move(tmp);
}
としていますが、もっとスマートな方法ないですかね
235デフォルトの名無しさん:2013/10/08(火) 12:30:35.21
std::async使えよ
236デフォルトの名無しさん:2013/10/08(火) 12:41:58.45
237デフォルトの名無しさん:2013/10/08(火) 14:08:08.56
>>227


hoge厨の典型例
エラーすら貼らずに質問する知能の低さ
238デフォルトの名無しさん:2013/10/08(火) 14:19:00.14
>>227
お前生きてるだけで迷惑なんだからせめて回線切って引きこもってろよ。
239デフォルトの名無しさん:2013/10/08(火) 14:32:11.52
>>232
左様か
240デフォルトの名無しさん:2013/10/08(火) 16:36:18.55
>>233
なんだ、>>233じゃなくて変数が氏ぬのか
つまんね
241デフォルトの名無しさん:2013/10/08(火) 16:38:13.45
delete >>233[]
242デフォルトの名無しさん:2013/10/08(火) 16:55:40.65
何でhoge使う奴って例外なく馬鹿なの?
DQNが車高下げて爆音で音楽かける傾向があるように
hoge使いは馬鹿な傾向があるの?
243デフォルトの名無しさん:2013/10/08(火) 17:16:30.02
std::auto_ptr<std::thread> th;
if (hage)
th.reset(new thread(func));
244デフォルトの名無しさん:2013/10/08(火) 17:30:44.70
>>233-234
お前もう来なくていいよ
245デフォルトの名無しさん:2013/10/08(火) 17:46:58.60
>>242
基地外・馬鹿だからhogeを使っている
これは遺伝子に組み込まれた特性。本人はどうすることもできないし、治療もできない
246デフォルトの名無しさん:2013/10/08(火) 18:30:34.71
解説やサンプルにhoge使ってる本って本当に悪本しかないよな。
よく分からずにあんな本をつかまされる初学者が可哀想。
247デフォルトの名無しさん:2013/10/08(火) 19:26:10.75
hogeを使っている本なんてあるのか
248デフォルトの名無しさん:2013/10/08(火) 19:56:50.94
auto_ptr何ソレ?あうとなの?
249デフォルトの名無しさん:2013/10/08(火) 20:10:55.91
アウトはドイツでは自動車のこと
250デフォルトの名無しさん:2013/10/08(火) 20:23:19.60
auto_ptrはdeprecatedだろ
せめてunique_ptr使えや
251デフォルトの名無しさん:2013/10/08(火) 20:25:36.53
>>250
そうなのか
252デフォルトの名無しさん:2013/10/08(火) 20:28:47.07
std::threadがあればunique_ptr使えるはずだろうしな
253デフォルトの名無しさん:2013/10/08(火) 20:32:19.42
>>251
自己レス
C++11以降ね
254デフォルトの名無しさん:2013/10/08(火) 20:59:26.52
>>247
本屋で本漁ってるとちょくちょく見かける

本の質は・・・・言わなくても分かるなw
255デフォルトの名無しさん:2013/10/08(火) 21:07:59.51
なんていうか可哀想なやつだな・・・

>>226
たとえばWindowsだとどのタイマAPIがどの物理的ハードウェアに依存するかは、
ACPIだかなんだかのドライバとして何がインストールされたか等、環境依存で変わる。
完全に環境依存な話で、それを吸収するラッパとかコンパイラの提供領分を超えている。
やるとしたらSDKの仕事だが、SDKが提供してるのが精度が環境依存なAPI止まりなわけで…
256デフォルトの名無しさん:2013/10/08(火) 21:24:41.59
>>233ってマジで頭悪そう
257デフォルトの名無しさん:2013/10/08(火) 21:53:02.35
11じゃなければboost::scoped_ptrだな
258デフォルトの名無しさん:2013/10/09(水) 01:21:00.65
C++11使ったことないけど
まとめるとこんな漢字?
std::unique_ptr<std::thread> th;
if (h0ge)
th.reset(new thread(func));

なんかかっこ悪いような。もっと良いやり方ないのか
259デフォルトの名無しさん:2013/10/09(水) 01:27:47.77
>>258
hoge厨はさっさと消えろ
NG回避までして荒らしたいのか

マジで根性腐ってるな
260デフォルトの名無しさん:2013/10/09(水) 01:44:04.92
おもちゃが喋った!
261デフォルトの名無しさん:2013/10/09(水) 01:49:01.61
ifの中でインスタンス確保以外しないなら
thread t(hoge ? thread(func) : thread());
とかでよかろ
262デフォルトの名無しさん:2013/10/09(水) 02:44:20.15
>>258
お前いい加減迷惑だよ。
263デフォルトの名無しさん:2013/10/09(水) 15:33:28.68
>>261
落書きは便所の壁にやってろキチガイ。
264デフォルトの名無しさん:2013/10/09(水) 17:45:44.21
>>258
おーい、ラムダが入ってねえぞ
265デフォルトの名無しさん:2013/10/09(水) 17:46:02.64
>>261
なんでヴァカが回答者気取ってるの?
お前の書き込みは価値がないんだから早く回線切れよ
266片山博文MZコスモ ◆T6xkBnTXz7B0 :2013/10/09(水) 19:34:04.82
C++ referenceの自動翻訳に挑戦してみました:

https://dl.dropboxusercontent.com/u/72753355/cppreference-en2ja-20130510-0.zip

<p>...</p>と<li>...</li>のみです。
267デフォルトの名無しさん:2013/10/10(木) 01:38:53.32
>>266
スレをゴミで荒らさないでください
268デフォルトの名無しさん:2013/10/10(木) 03:12:49.40
>>267>>266にアンカうってるけどあぼーんで見えない
CスレにいるキチガイっていったらQZかな
269デフォルトの名無しさん:2013/10/10(木) 06:22:06.48
>>268
Yes
270デフォルトの名無しさん:2013/10/10(木) 13:08:54.73
やっぱりQZはカスだな
271デフォルトの名無しさん:2013/10/10(木) 14:30:55.64
perlでいうところの

use List::Util qw(min);
$min = min map { $_->value() } @a;

ということをしたい場合。
つまり、配列の中の各要素の特定のメンバーの中での最小値を求めたい場合。
C++だとどういうやり方がナウいんですか?
272デフォルトの名無しさん:2013/10/10(木) 14:35:16.83
int min = 0;
for (auto n : list)
min = std::min(min, n);
273デフォルトの名無しさん:2013/10/10(木) 14:38:28.96
0点
274デフォルトの名無しさん:2013/10/10(木) 14:39:12.90
>>272
listの要素は全て負数なの?
っていうかアルゴリズム系のにラムダ突っ込むとかそういうのは無いのか。
275272:2013/10/10(木) 14:43:29.23
ああ0から始めたらダメだな
アホだったわすまん
276デフォルトの名無しさん:2013/10/10(木) 15:04:47.59
>>272
この手の問題は第一要素を初期値にしなければならない
277デフォルトの名無しさん:2013/10/10(木) 15:12:22.10
要素数ゼロにしてクラッシュさせる遊び
278デフォルトの名無しさん:2013/10/10(木) 15:35:55.35
Google→[std::min_element]
279デフォルトの名無しさん:2013/10/10(木) 16:16:46.04
minの部分はmin_elementでいけるけど
mapの部分はどうするんだろ
280デフォルトの名無しさん:2013/10/10(木) 16:41:05.63
やりたいことは特定のメンバの最小値を求めることでしょ
それならmin_elementにラムダを渡せばいいんじゃない?
もしそのメンバしか比較対象にならないなら、クラスに < 演算子を定義しておくとか
281デフォルトの名無しさん:2013/10/10(木) 16:49:39.01
>>280
いきなりmin_elementに渡したら、元の要素のコピーコンストラクターが動くぞ。
282デフォルトの名無しさん:2013/10/10(木) 16:52:45.62
std::list<std::vector<char> > a;
この型に対してperlでいうところの
min_size = min map { $_->size() } a;
これをやろうとして、
min_elementにa.begin()やa.end()を渡すと
std::vector<char>のコピーコンストラクターが動く?
283デフォルトの名無しさん:2013/10/10(木) 17:02:44.01
>>281
何の事?もしかしてラムダの引数のこと?
それなら普通にconst参照にすれば良いよね
284デフォルトの名無しさん:2013/10/10(木) 17:15:26.61
つまり
int min = std::min_element(list.begin(), list.end(), [](const A& x,const A& y){ return x.value<y.value; })->value;
285デフォルトの名無しさん:2013/10/10(木) 18:31:34.29
hogeはC++の知識すらたいしてないのに最新のC++11を使うからな
286デフォルトの名無しさん:2013/10/10(木) 23:10:00.57
ラムダなしだと大掛かりになりそうだな
287デフォルトの名無しさん:2013/10/11(金) 18:32:34.84
ラムダなしで単純に書こうとしても無理だろ
288デフォルトの名無しさん:2013/10/11(金) 20:02:33.13
win32アプリケーションを使うことになったのですが、
文字列の扱いについて、
char std::string CString TCHAR PLCSTR PLCTSRT 等ありすぎて何が何だか分からなくなるのですが、
皆さんはどのように使い分けてるのですか?
また、通常使うのはどの型を使ってコードを書かれますか?
289デフォルトの名無しさん:2013/10/11(金) 20:06:55.93
WTL使ってるから普段はCString使ってる
LPCTSTRとかは単なるtypedefだからわからないってことはないだろ
290デフォルトの名無しさん:2013/10/11(金) 20:14:30.82
>>288
C++はstring
291デフォルトの名無しさん:2013/10/11(金) 20:15:45.83
#ifdef _UNICODE
typedef wchar_t TCHAR;
#else
typedef char TCHAR;
#endif
こういうこと。wchar_tはワイド文字用で2バイト以上ある
stringやCStringはこれらの文字列を楽に使えるようにしたテンプレートクラス
だから普段はこうやってTCHARを使っとくのが無難
typedef std::basic_string<TCHAR> tstring;
tstring str = _T("hoge");
292デフォルトの名無しさん:2013/10/11(金) 20:17:42.30
stringが内部で勝手にメモリ確保しまくるんだけどどうやって制御すればいいhoge?
293デフォルトの名無しさん:2013/10/11(金) 20:18:23.48
reserveすればいいhoge
294デフォルトの名無しさん:2013/10/11(金) 20:22:27.58
>>292
制御って、なにをしたい?
295デフォルトの名無しさん:2013/10/11(金) 20:25:25.83
size見ろよhage
296デフォルトの名無しさん:2013/10/11(金) 21:35:15.00
hogeユーザーはキチガイなんので
構わないで下さい
297デフォルトの名無しさん:2013/10/11(金) 22:26:41.95
分かったhoge
298デフォルトの名無しさん:2013/10/11(金) 23:00:33.35
ポインタはsignedですか?unsignedですか?
299デフォルトの名無しさん:2013/10/11(金) 23:02:17.61
アドレスに符号付けてどうすんの?
300デフォルトの名無しさん:2013/10/11(金) 23:04:03.82
ポインターはポインターだ。
signedとか何イミフなこと言ってんの?
301デフォルトの名無しさん:2013/10/11(金) 23:14:21.97
>>300
出た
本物の馬鹿が
302 ◆hogee.iIu3As :2013/10/11(金) 23:28:29.50
hogeユーザーはキチガイが多くて困ります。
303デフォルトの名無しさん:2013/10/11(金) 23:31:12.63
unsigned float
304デフォルトの名無しさん:2013/10/11(金) 23:31:21.79
hoge使いには基地外しかいない
ポンタはアドレスですよ、アドレス
305デフォルトの名無しさん:2013/10/11(金) 23:34:50.97
unsigned同士の減算の結果はunsignedになると定まっている。
ポインター同士の減算の結果はsignedである。
ゆえにポインターはsignedである。
306デフォルトの名無しさん:2013/10/11(金) 23:39:06.87
>>304
そのアドレスを意味する数値の型はsignedかunsignedかという話しだろ
307デフォルトの名無しさん:2013/10/11(金) 23:40:56.68
>>304
>ポンタはアドレス
脳内定義乙
308デフォルトの名無しさん:2013/10/11(金) 23:50:42.05
碁石の表はどっちかみたいな問題か
309デフォルトの名無しさん:2013/10/11(金) 23:59:01.51
三時半は深夜か早朝か
みたいなものか
310デフォルトの名無しさん:2013/10/12(土) 00:05:15.91
>>298 は、質問としてはまとも
>>300 からだよ、アフォ流れになったのは
311デフォルトの名無しさん:2013/10/12(土) 00:06:01.31
>>299 もデコーダ組めない手合いと踏んでいる
312デフォルトの名無しさん:2013/10/12(土) 00:26:13.66
ポンタ?
ローソンのカードか?
313デフォルトの名無しさん:2013/10/12(土) 00:47:25.86
intptr_t とかにしとけ
314デフォルトの名無しさん:2013/10/12(土) 00:54:41.15
配列で
a[0]をさすポンタ - a[10]をさすポンタ したらマイナスになるからな
315デフォルトの名無しさん:2013/10/12(土) 01:04:35.48
ローソンで毎回必ずポイントカードはお餅ですかと聞かれてじゃまくさいんだけど、
ポンタなんか持ってる奴いるのか?
あんなもの持ってどうするんだ?
316デフォルトの名無しさん:2013/10/12(土) 01:10:52.40
>>315
聞かれるよな。あれなんか特典あるのか
ローソンはアニメ関連のこと色々やっているからポンタ貯めてアニメ関連景品ゲット!とか
317710:2013/10/12(土) 01:19:34.88
>>314
その結果って既にぽんたじゃねーし
318デフォルトの名無しさん:2013/10/12(土) 01:26:53.93
ポンタクラスの-演算はsigned intを返すからね
319デフォルトの名無しさん:2013/10/12(土) 01:38:04.89
>>308
そりゃ歩・飛・角が表で、と・龍・馬が裏だろう?
320デフォルトの名無しさん:2013/10/12(土) 01:47:49.76
>>315
ローソン系のパスポートアカウントだと思えば。
あれあったら、wifiつかえるんだろ?
ド近所にないからしらんのだが(ちょっといったらある)
321デフォルトの名無しさん:2013/10/12(土) 02:22:11.12
アドレスと言っていいのはvoidポンタだけだと思う
322デフォルトの名無しさん:2013/10/12(土) 02:42:22.34
>>314
ひいた結果が何かチップセレクトするのかよ?
323デフォルトの名無しさん:2013/10/12(土) 02:57:58.49
つーかコンビニって多少高いけど背に腹は代えられない便利さで使ってるからポイントカードとかウザいんだよ
ポイントカードはお持ちですか?じゃねーよ
1秒でも早く会計済ませろボンクラ

ローソンのカードは作ったけど財布に入れとくとかさばるから結局家に放置してる
324デフォルトの名無しさん:2013/10/12(土) 02:59:10.55
クレカ難民は相応しい板へどうぞ
325デフォルトの名無しさん:2013/10/12(土) 03:15:08.11
ポイントカードはうざくないけど初音ミクとのコラボがうざい。
何でアニヲタに迎合してんの?
326デフォルトの名無しさん:2013/10/12(土) 03:27:57.71
>>325
コンビニで金落とすのはヲタだからな

犬のエサみたいなコンビニ弁当とか何の肉か分からないフライドフードとか
ああいう体に悪い原価率の低いものを嬉しそうに買ってくれるのはヲタなんだよ
ビールとかしか買わない客よりよっぽどありがたいお客様なんだよ
327デフォルトの名無しさん:2013/10/12(土) 04:29:13.46
ファミチキおいひぃれすぅ(^ω^)
328デフォルトの名無しさん:2013/10/12(土) 04:43:03.29
ミクコラボはファミマで、ローソンはアニメ全般でコラボしてるイメージ
Lチキバーガーうまいですー
329 ◆hogee.iIu3As :2013/10/12(土) 04:46:16.26
おまえら糞レスばかりしてんじゃねーよ
330デフォルトの名無しさん:2013/10/12(土) 08:06:51.95
でも「日本のおいしい食卓」とかいわれると普通にむかつくぜ
331デフォルトの名無しさん:2013/10/12(土) 12:10:44.69
>>310
他人を誹謗するだけで
論理的な反論ができないようだな
332 ◆QZaw55cn4c :2013/10/12(土) 12:29:58.11
>ポインタはsignedですか?unsignedですか?

どっちでもいいので好きなほうを
ポインタ演算で有効なのは差をとることのみだったかと
333デフォルトの名無しさん:2013/10/12(土) 13:37:29.59
ファミチキとLチキ

どっちが好き?
334デフォルトの名無しさん:2013/10/12(土) 14:33:38.72
おっぱい
335デフォルトの名無しさん:2013/10/12(土) 15:44:54.76
>>333
ファミチキとLチキの差は正直よく分からない
サンクスのフライドチキンなら違いは分かるけども
336デフォルトの名無しさん:2013/10/12(土) 16:25:25.40
フライドチキンよりからあげくんのほうが旨い
337デフォルトの名無しさん:2013/10/12(土) 16:25:48.98
ケンタ
338デフォルトの名無しさん:2013/10/12(土) 17:16:06.94
ケンタは骨があって食べにくい。
339デフォルトの名無しさん:2013/10/12(土) 19:13:50.63
ケンタッキーは衣が旨い
340デフォルトの名無しさん:2013/10/12(土) 19:38:36.28
ケンタはクリスマスに行くものというイメージが強すぎて
普段は行く気がしない
341デフォルトの名無しさん:2013/10/12(土) 20:04:51.91
ケンタのイメージ戦略は間違ってると思うよ
342デフォルトの名無しさん:2013/10/12(土) 20:09:59.29
クリスマスは七面鳥だからな
ケンタの露骨なマーケティングに騙されず普段からケンタを食べましょう
343デフォルトの名無しさん:2013/10/12(土) 20:27:33.36
ケンタの公式サイト行ったらトップページでCMが3本連続で流れたんだけど、
2本目のCMがどう見てもブラック企業のサービス残業中に見えるんだ。
「サービス残業のお供にケンタッキー」みたいなイメージで推していく感じなのかな。
344デフォルトの名無しさん:2013/10/12(土) 20:42:09.88
皆ケンタって素手で食べてる?
俺は油でべた付くのが嫌で紙に巻いて食べてたけど今は箸で食べてる
345デフォルトの名無しさん:2013/10/12(土) 20:44:23.47
ケンタ専用の改造フォーク使ってる。
346デフォルトの名無しさん:2013/10/12(土) 20:57:45.40
>>345
興味ある
うp
347デフォルトの名無しさん:2013/10/12(土) 21:04:36.79
>>344
想像するだけでうんざりする
絶対食いたくねーよ
ファミチキでいいや
348デフォルトの名無しさん:2013/10/12(土) 21:08:06.39
>>344
素手だな
但し必ずテイクアウトにして家で食ってる
349デフォルトの名無しさん:2013/10/12(土) 22:24:18.76
C++erの食う肉。ネタか


いいぞもっとやれww

軟弱者の少ないはずのスレだからな、こういうネタもいいわな
350デフォルトの名無しさん:2013/10/13(日) 00:30:54.73
案外肉食男子が多いんだな
351デフォルトの名無しさん:2013/10/13(日) 00:41:18.58
ケンタは実はコールスローがめちゃくちゃ美味しいから一回食ってみ

って書こうと思ったけど

肉食系の流れになったから書けなくなった
352デフォルトの名無しさん:2013/10/13(日) 00:59:42.96
バカにしてたサイドメニューが意外にうまいのと
メインは油断しすぎがあそこだね

普通のFCに「上」を入れると受けるんじゃないかなあ
塩辛い練り物なしで、いい部位だけくれるやつ
353デフォルトの名無しさん:2013/10/13(日) 01:10:05.77
なんなのケンタの近寄りがたいオーラ。
ここはカップル用のクリスマスグッズ専門店ですからお帰りください
と言われそうな雰囲気。
354デフォルトの名無しさん:2013/10/13(日) 01:19:30.03
クリスマスでもないのにケンタッキー行くなんて
特別な理由がないと気後れするよ
うちの田舎では
パーティー用総菜店だもの
355デフォルトの名無しさん:2013/10/13(日) 01:23:47.38
プログラマーといえばジャンクフードとタバコ
356デフォルトの名無しさん:2013/10/13(日) 01:24:25.03
ケンタッキーってネクタイしなくても入れる?
断られない?
357デフォルトの名無しさん:2013/10/13(日) 01:25:49.57
ドカタはジャンクフード、アニメ、エロゲーが定番
358デフォルトの名無しさん:2013/10/13(日) 02:06:42.76
c++初心者なのですが勉強用としてc++ primerを購入しようとおもっているのですが
リファレンスとしてc++ programming languageも買った方がいいでしょうか?
359デフォルトの名無しさん:2013/10/13(日) 02:09:01.51
高橋麻奈著やさしいC++から始めるといいでしょう。
360デフォルトの名無しさん:2013/10/13(日) 02:18:50.51
>>359
他の言語学ぶ時の経験からしっかりと細かいところまで解説してあるような本を買ったほうが
困らないと思っているのとc++11のしっかりとした解説がある本がいいのでその本だと少しイメージが違います
361デフォルトの名無しさん:2013/10/13(日) 02:22:25.84
そういうことなら、今は待て時期が悪いとしか言いようがない。
言いようがない。
そんな本があるならおれも知りたいが、もしかして洋書の話だったのか。
362デフォルトの名無しさん:2013/10/13(日) 02:24:45.62
>>361
購入しようとしているとは洋書ですね
もちろん別に洋書にこだわってはいないので和書で良い物がおればそちらでも大丈夫ですが
363デフォルトの名無しさん:2013/10/13(日) 02:31:38.00
ないね。
むしろ海外の掲示板で質問したほうがいいでしょう。
国内でバラエティに富む洋書を制覇した人は少ないでしょうから。
立ち読みできる種類も最近は限られてるしね。
364デフォルトの名無しさん:2013/10/13(日) 02:32:51.05
そういえば、ビニール袋を破って中を見ても怒られない必殺技あるけど知りたい?
365デフォルトの名無しさん:2013/10/13(日) 02:37:17.01
なるほど。。
では適当な海外掲示板見つけて質問してきます
366デフォルトの名無しさん:2013/10/13(日) 02:38:20.38
ビルド中のたばこがうまくてC++を使う
367デフォルトの名無しさん:2013/10/13(日) 02:44:01.99
ビルド中の飲酒が止められない。
368デフォルトの名無しさん:2013/10/13(日) 04:23:32.73
精度や有効数字が低くていいので標準より高速なMathライブラリってありませんか?
369デフォルトの名無しさん:2013/10/13(日) 11:34:54.34
glm
370デフォルトの名無しさん:2013/10/13(日) 12:14:17.41
自作Stackクラスの感想を頂きたいのですが
ここに晒してもいいでしょうか?
371デフォルトの名無しさん:2013/10/13(日) 12:24:12.08
晒す前に留意した点を三行にまとめてみ
372370:2013/10/13(日) 12:40:44.35
>>371
C++の勉強のために作成したので、なるべく言語の機能を使って書くようにした
出来るだけ読みやすいコードになるように努めた
std::stack を真似ようとしたが、一部機能をあきらめた

以上です
373デフォルトの名無しさん:2013/10/13(日) 12:41:07.69
すきにしろよ
374370:2013/10/13(日) 12:51:07.13
スタック本体    :Stack.h     http://codepad.org/l5bj3rnq
実行処理と結果 :StackTest.cpp http://codepad.org/iUfTnJc7

あざす
375デフォルトの名無しさん:2013/10/13(日) 13:08:53.24
お好みでっていう話になるけど、インラインのメンバのコードはクラス定義の中に書いちゃってもいいかなと思った。
376デフォルトの名無しさん:2013/10/13(日) 13:25:07.50
explicit CStack(); explicitいらなくね
virtual ~CStack(); virtualいらなくね
void Push(const TYPE& data);参照にしてよ
const TYPE& Top() const;
TYPE& Top();
2つつくれ
377370:2013/10/13(日) 13:56:24.63
>>375
言われるとクラス定義の中に書いたほうが見やすいかも・・・でもやっぱり好みなんですかね
>>376
explicitがいらないのは余分なコンストラクタが無いから(?)でしょうか?
この宣言の使い分けがよくわからないです
378デフォルトの名無しさん:2013/10/13(日) 14:01:28.66
通常のnewは失敗したらstd::bad_alloc例外を投げるから↓は意味ない
newnode = new CStackNode<TYPE>( data );
if (newnode == NULL)
exit(0);
379デフォルトの名無しさん:2013/10/13(日) 14:14:26.03
newの後のnullチェックとか
どんな教育受けたんだ
380デフォルトの名無しさん:2013/10/13(日) 14:20:35.28
42行目。要素数TYPEはおかしくね?CStack<std::string>とかできないぞ
TYPE m_elems;// スタックの要素数
381370:2013/10/13(日) 14:24:53.98
>>378
知りませんでした。消しておきます
>>379
社員(?)としての教育は受けてないです
>>380
ああ、本当ですね・・・。気付きませんでした。これはint型でいいんですかね
3821:2013/10/13(日) 14:28:09.94
こういうアホが作ったプログラムを使うハメになるユーザーが悲劇すぎる。
383370:2013/10/13(日) 15:05:36.98
>>375,376,378,379,380
ありがとうございました!

Stack.h: http://codepad.org/EWtOBQZS
384デフォルトの名無しさん:2013/10/13(日) 15:09:02.55
クラス名にCプリフィックスやメンバ変数にm_プリフィックス付けるのをまずヤメレ
385デフォルトの名無しさん:2013/10/13(日) 15:10:22.43
>>379
C++創成期の教育じゃね
386デフォルトの名無しさん:2013/10/13(日) 15:12:17.27
VC6まではNULL返しやがったからな
ハンドラ変更で対処はできるが

今でもnew(std::nothrow)なら許す
387デフォルトの名無しさん:2013/10/13(日) 15:56:56.31
なぜビルド中に酒がのめるんだ?

自宅でやってること?
388デフォルトの名無しさん:2013/10/13(日) 16:02:06.62
残業中なら多少飲んでも怒られない会社が多い
389デフォルトの名無しさん:2013/10/13(日) 16:04:04.03
> if (m_topnode == false) {

これはカスだな

勝手にexitしてるのもカス

operator= が追記みたいな動きになってるのもカス

operator=の途中で例外発生したら中途半端な状態で壊れたようになって戻ってくるのもカス。
考え無しで設計してるだろ。コンテナてのはそういうものじゃねーよ。
390デフォルトの名無しさん:2013/10/13(日) 16:26:51.75
>>387
hogeの会社では普通だよ
391デフォルトの名無しさん:2013/10/13(日) 16:39:14.43
Effective C++ だか Exceptional C++ だったかのシリーズに、
当時理想とされた実装と注意点がまとめられているから、
まずはそれを読むのがいいべさなあ
392デフォルトの名無しさん:2013/10/13(日) 17:18:42.82
>>384
メンバ変数スコープのノーテーションはよく使われると思うんですけどそれは(スタイルの押し付けでは?)

STL 接尾辞アンダースコア
Microsoft C++ (新/旧) 接頭辞m_
Google C++ 接尾辞アンダースコア
Apple Cocoa 接尾辞アンダースコア
Mozzila C++ 接頭辞m(+キャメルケース)
393デフォルトの名無しさん:2013/10/13(日) 17:21:18.77
名前はかぶりやすいけど、マイクロソフト方式だと何も考えなくても
かぶらない。
そこは評価できる。
394デフォルトの名無しさん:2013/10/13(日) 17:30:20.31
Pop の戻りはvoidにすべき

operator = の戻りは*thisにすべき
395デフォルトの名無しさん:2013/10/13(日) 17:32:15.55
接尾アンダースコアって意外と多いんだな。
個人的には視認しにくくてあまり好きじゃないのだが。
396デフォルトの名無しさん:2013/10/13(日) 17:36:42.54
ハーブ・サッター
hoge_

ジェイソン・グレゴリー
m_hoge
397デフォルトの名無しさん:2013/10/13(日) 17:51:06.84
>>395
>個人的には視認しにくくてあまり好きじゃないのだが。
お前もそうなのか。俺もだ。m_が実質会社の標準でそれが染み付いているんだろうが
398デフォルトの名無しさん:2013/10/13(日) 17:54:00.05
メンバ変数にプリフィックス/ポストフィックス付けたいならアンダースコア(1個)プリフィックスが一番合理的
補完機能(VSのインテリセンスとか)があるIDEなら_を押すとメンバ変数の一覧が出てくる
アンダースコアの次は必ず小文字にしておけばC++の規約ともぶつからない
399デフォルトの名無しさん:2013/10/13(日) 17:54:53.66
付けたくないです
400デフォルトの名無しさん:2013/10/13(日) 17:58:26.10
>>398
先頭アンダースコアは規約で予約扱い
401デフォルトの名無しさん:2013/10/13(日) 18:01:18.43
アンダースコア始まりのルールってめんどくさいから一律で禁止してるわ
402デフォルトの名無しさん:2013/10/13(日) 18:03:59.42
>>400
それはグローバルネームスペースでの話
それ以外では「_大文字〜」が禁止されているが_の次が小文字なら問題ない
403402:2013/10/13(日) 18:12:20.06
すんません訂正
× グローバルネームスペース
○ グローバルスコープ
404デフォルトの名無しさん:2013/10/13(日) 18:13:18.70
>>394
素晴らしい
405デフォルトの名無しさん:2013/10/13(日) 18:14:57.24
アンダースコアのプリフィクスやポストフィクスって「普通は触らない、内部で使うもの」
という感じがあって、少なくともpublicメンバには付けたくないな。
406デフォルトの名無しさん:2013/10/13(日) 18:16:48.46
void CStack<TYPE>::swap(const CStack<TYPE>& ); と
void swap(const CStack<TYPE>&, const CStack<TYPE>&)
を実装すべし
407デフォルトの名無しさん:2013/10/13(日) 18:29:23.46
>>406
なぜconst
408デフォルトの名無しさん:2013/10/13(日) 18:31:59.15
さっぱり分らんが、moveさせるためじゃないの
409デフォルトの名無しさん:2013/10/13(日) 18:32:49.42
素で間違えたw
コピペで楽しすぎた
410デフォルトの名無しさん:2013/10/13(日) 18:49:54.63
>>407
hoge使いだから
411デフォルトの名無しさん:2013/10/13(日) 19:01:52.60
経験の浅い奴しか間違えない間違え方
412デフォルトの名無しさん:2013/10/13(日) 22:04:00.22
いや、元のソースのコピーコンストラクタをコピっただけだから
言い訳スマソ
413デフォルトの名無しさん:2013/10/13(日) 23:05:15.64
swapはthrow()が必須
414デフォルトの名無しさん:2013/10/13(日) 23:06:22.61
>>412
アフォなアンチhogehogeちゃんに謝る必要は無い
415デフォルトの名無しさん:2013/10/14(月) 00:24:43.35
swapでthrowすんな
Effective C++ Item 25
416デフォルトの名無しさん:2013/10/14(月) 01:24:30.07
>>406
void CStack<TYPE>::swap(CStack<TYPE>&) throw();

これ以外許さんからな
417デフォルトの名無しさん:2013/10/14(月) 01:26:33.15
>>383
コピーアサインメントでリークしてるだロー
418デフォルトの名無しさん:2013/10/14(月) 01:28:54.01
>>383
つうか、これ面白くなるし、お前にとっても得がたい貴重な意見を得られるだろうけど、残念ながらその話はいくらでも長くなる。
stackクラス作ってみる専用スレがあってもいいんじゃないか。
419デフォルトの名無しさん:2013/10/14(月) 06:06:18.70
>>416
それはメンバ関数の場合だよね?
何のためにCStack<TYPE>を戻すの?

あとグローバル関数もあっていいんだよね?
そっちもCStack<TYPE>を戻せと?

質問ばかりでスマソ
420デフォルトの名無しさん:2013/10/14(月) 06:22:21.75
>>417 の指摘に対応するため、operator = はコピーコンストラクタとswapを組み合わせて実装すべし
421383:2013/10/14(月) 06:52:53.36
>>384,389,394,405,406,415,416,417,418,420
あざす!おはようございます
if (m_topnode == NULL)で何を返せばいいのかわかりませんでした
throw()(例外処理?)をまだ学んでないのでswapはあきらめました
>>417,418
コピーアサインメントでスタックを空にするようにしました
例外知らない奴がスレなんか立てていいのでしょうか

Stack.h: http://codepad.org/1ggMEDl0
422デフォルトの名無しさん:2013/10/14(月) 07:23:53.54
> if (m_topnode == NULL)で何を返せばいいのかわかりませんでした
Popの戻りをvoidにするのはそういう理由じゃないぞ。

学んでなくてもthrow()と書くだけだからできるだろ。

あとどうもNULLは気持ち悪い。
423デフォルトの名無しさん:2013/10/14(月) 08:14:57.74
C++ の可変長引数テンプレートで質問です。

再帰を使って型安全なprintfもどきは書けたんですが、
JavaのString.formatでいう "%2$d %1$s" のような
参照する引数のオフセットを指定する機能をつけるにはどうしたらいいでしょうか。
424421:2013/10/14(月) 08:16:34.90
>>422 あざす!
Stack.h  : http://codepad.org/SnU4PfBT
実行結果 : http://codepad.org/fQAZlzmd
425デフォルトの名無しさん:2013/10/14(月) 08:20:48.54
引数をtupleにぶち込んでインデクスでgetとか?試してないけど
426デフォルトの名無しさん:2013/10/14(月) 08:37:13.85
>>419
戻すとは?
427デフォルトの名無しさん:2013/10/14(月) 08:42:38.88
>>424
コンテナのoperator=は

template <typename TYPE>
Stack<TYPE>& Stack<TYPE> ::operator =(const Stack<TYPE>& rother)
{
Stack<TYPE>(rother).swap(*this);
return *this;
}

このやり方しか許されないので
428デフォルトの名無しさん:2013/10/14(月) 08:44:53.17
>>423
boost::formatのソースみりゃいいと思うよ
429デフォルトの名無しさん:2013/10/14(月) 09:01:18.70
>>420,427
単純に自身にコピーするのはだめですか?
>>417氏が指摘されたリークに関係あるのでしょうか
430デフォルトの名無しさん:2013/10/14(月) 09:05:26.51
>>426
見間違い。忘れてください。
::が見えないくらい目が悪いので。
431デフォルトの名無しさん:2013/10/14(月) 09:09:55.31
>>429
コピーの途中で例外発生して処理中断になったとき、お前のやり方だと中途半端な未完成構造ができるから危ない
432デフォルトの名無しさん:2013/10/14(月) 09:11:16.56
>>428
ありがとうございます。

boost::formatってコレでしょうか?
http://www.boost.org/doc/libs/1_54_0/libs/format/example/sample_formats.cpp
variadic templateは使われていないようですが、
variadic templateを使うバージョンもあるのでしょうか?
433デフォルトの名無しさん:2013/10/14(月) 09:13:31.72
>>425
ありがとうございます。

可変長引数を受け取ってからtupleに代入して引数の個数を取得するコードは動いたのですが、
コンパイル時に分からないn番目の要素をtupleから取得する方法が分かりませんでした。
434デフォルトの名無しさん:2013/10/14(月) 09:14:35.70
>>429
あと今の Stack<TYPE>::Swap の実装だと、
・失敗する可能性がある
・全く効率的でない
という欠陥がある。
>>427,431の指摘に対応するためにはここを直さないとダメ。
435デフォルトの名無しさん:2013/10/14(月) 09:14:54.51
>>424
初期化子を使えよ。
initなんか消せ。
copyメソッドなんか消せ。
あれを書いていいのはcopy-constructorだけだから、その中に直接書け。
436デフォルトの名無しさん:2013/10/14(月) 09:16:00.29
書き忘れたが
Swap ではなく、swap にしろ。
これは些細な問題ではない。
437デフォルトの名無しさん:2013/10/14(月) 09:17:38.39
>>424
メンバー関数は全部小文字な。
他のコンテナーと簡単にバトンタッチできるように。
438デフォルトの名無しさん:2013/10/14(月) 09:22:47.71
swapはこうだな。これしかない。

template <typename TYPE>
void Stack<TYPE>::swap(Stack<TYPE>& rother) throw()
{
std::swap(m_lownode, rother. m_lownode);
std::swap(m_topnode, rother. m_topnode);
std::swap(m_elems, rother.m_elems);
}
439デフォルトの名無しさん:2013/10/14(月) 09:29:25.94
>>423
再帰で std::vector<boost::any> に詰め込めば、後からランダムアクセスできる。
ただし boost::any の type() で typeinfo を調べてから 型ごとに boost::any_cast<T> するあたりから泥臭くなる。
まあCの可変長引数と違って、実行時に型チェックができるだけマシっちゃマシかな
440デフォルトの名無しさん:2013/10/14(月) 09:57:10.43
>>439
ありがとうございます。
これなら目的は達成できそうです。
441424:2013/10/14(月) 10:25:46.22
>>427,431,434,435,436,437,438
ありがとうございます!

Stack.h: http://codepad.org/A8uhjc75
実行結果: http://codepad.org/GpHZht3l
442デフォルトの名無しさん:2013/10/14(月) 10:42:37.24
>>440
型を消去せず、保持したまま掘り進めていくことも可能
http://ideone.com/3EcKXa
このソースの上の方にある構造体は、index_tupleイディオムを実装するためのもので、タプルを展開して扱う事が出来るようになるのでとても便利
443デフォルトの名無しさん:2013/10/14(月) 11:52:26.13
>>441
グローバルな swap関数を用意するのも忘れるなよ。
std::swap をオーバーライドするものとなる。
これがないとせっかく作ったメンバ関数としてのswapの価値が半減する。
444デフォルトの名無しさん:2013/10/14(月) 17:38:31.15
>>442
ありがとうございます。
でもコレはどう考えても効率良くないですし、
タプルの一部を参照した後の処理(この例だとcoutへの出力)が探索部分の内側に隠れてしまっていて使いづらいですね。
445デフォルトの名無しさん:2013/10/14(月) 18:39:00.67
2chで質問する時点で効率悪いのにこのアフォは何言ってんの?
446デフォルトの名無しさん:2013/10/14(月) 19:05:37.10
こんなこと極めてる段階で、その気になれば(仕上げとして)Cでごりごりっと書けば
効率は出しやすいことくらいわかってるわけで、つまり、何を今さら
447デフォルトの名無しさん:2013/10/14(月) 19:27:02.32
>>444
boost::any使うと動的確保が必要になるしRTTIもコストかかるよ、多分関数呼び出しのコストより高いと思う
処理はファンクタを渡せるようにすれば汎用的になるぞ
http://ideone.com/nOv2E1
448デフォルトの名無しさん:2013/10/14(月) 20:26:44.27
>思う
なんだ思う厨か
相変わらずベンチデータもなして糞みたいな妄想を垂れ流してるんだな
449デフォルトの名無しさん:2013/10/14(月) 20:35:00.58
関数呼び出しのコストより確実に高い。嘘だと思うなら検証してみれば?
これでオッケー。
450デフォルトの名無しさん:2013/10/14(月) 20:37:05.32
思う厨がソース出さずに確実だと言い張っても痛いだけ
451デフォルトの名無しさん:2013/10/14(月) 20:37:31.54
思うhoge
452デフォルトの名無しさん:2013/10/14(月) 20:42:11.45
ベンチマークとりまhoge
453デフォルトの名無しさん:2013/10/14(月) 20:48:05.95
http://stackoverflow.com/questions/579887/how-expensive-is-rtti
の下の方に、 typeid による型の比較と dynamic_castにほる型の比較 のベンチマークがある。
環境にもよるが typeidの比較が特に高コストだとは言えないようだ。

>>447 のコードはindex_tuple の生成自体は別に遅くないと思うが、
アクセスの度に tuple を parameter pack に変換して端から再帰スキャンするので
引数が多い場合やパラメータに複雑な型が使われている場合は影響があるかもしれない。
末尾再帰最適化が十分に優れている環境はそれほど多くはないだろう。

まあ使うのは >>444 だと思うのでベンチするなり好みで選ぶなり好きにしろや
454デフォルトの名無しさん:2013/10/16(水) 05:21:10.02
質問
あるapiでリエントラントな関数の呼び出しを要求される関数があるのですが
FuncA(FuncB)
FuncBはリエントラントでなければならない

リエントラントというのはグローバルにアクセスしたらリエントラントでなくなる、という説明があったのですが
グローバル変数を書き換えないアクセスでもアウトですか?
455デフォルトの名無しさん:2013/10/16(水) 05:42:44.79
>>454

int nCalled = 0;
void FuncB(){
 if( ++nCalled == 1 ){
  do{
   // do the job that may raise reentrant
  }while(--nCalled);
 }
}

シングルスレッドの処理系ならこんな風にも書けるな。
nCalled にアクセスしている部分は処理系によってはクリティカルセクションで囲むことになるだろう
456デフォルトの名無しさん:2013/10/16(水) 06:00:39.66
>>454
アウト
457デフォルトの名無しさん:2013/10/16(水) 06:32:03.54
>>456
理由は?
458デフォルトの名無しさん:2013/10/16(水) 07:39:07.77
無難なコードを書け
459デフォルトの名無しさん:2013/10/16(水) 09:10:51.51
>>454
書き換えなきゃ即値と同じ
460デフォルトの名無しさん:2013/10/16(水) 09:12:30.33
>>455
これでdo while間がエントラントになるということですか?試してみます

>>459
ですよね、なんかテキトーな説明が多いような
461デフォルトの名無しさん:2013/10/16(水) 09:16:54.60
>>460
外部から書き換えると、物によっては不安定
462デフォルトの名無しさん:2013/10/16(水) 09:17:36.73
>>459
理屈上はな。
463デフォルトの名無しさん:2013/10/17(木) 13:53:38.96
>>462
では即値として使って問題になる例を。
464デフォルトの名無しさん:2013/10/17(木) 14:22:28.81
全然問題ない

馬鹿を相手するのは無駄
465デフォルトの名無しさん:2013/10/17(木) 17:54:13.04
>>463
絶対にタイプミスしない「理屈上」の世界の話は、他所でやってくれ。
466デフォルトの名無しさん:2013/10/17(木) 17:59:20.64
>>465
意味が分からない
467デフォルトの名無しさん:2013/10/17(木) 19:57:25.85
今までwin32アプリケーションの開発はしたことがあったのですが、
mfcというものがあると知って使ってみたのですが、
win32とは全然違っていて少し戸惑っています
何かおすすめの書籍か、解説サイトがあれば教えていただけませんか?
また、sqlserverを利用したいと思っているのですが、
oledbが廃止になるなんて記事を見まして、何を使おうか迷っています
.netは使わない方向で行きたいのですが、
adoもサイトを見た感じですが、おすすめっぽくないのですが、
ado, dao, oledb. odbc等皆さんはどれを使っていますか?
468デフォルトの名無しさん:2013/10/17(木) 21:36:27.59
C++erなら、そういうときは、実際の市場のアプリが
何を使ってることが多いか気をつけて見ているといい

MFCもあるが、ATLもWTLもあるよ。と言っておく

一頃はdao*.dll がよく載ってたね
MDAC必須とかいうアプリも結構あった
今は、sqliteが載ってるやつが多いんじゃないか
469デフォルトの名無しさん:2013/10/17(木) 21:45:27.09
>>467
MFCによるWindowsプログラミング
470デフォルトの名無しさん:2013/10/18(金) 23:00:51.17
お助けを
visual studioを使ってプログラムを書いています
ファイルパスとしてUTF 8で文字列が渡されますが、fopen_s(&fp, filepath, "w")で失敗します
恐らく文字コードをOSのエンコーディングにしなければならないものと思われますが
出来上がったものは海外でも使われる可能性があり、utf 8でfopenを行いたいのですが
内部文字コードはどうすれば変更できるのでしょうか?
471デフォルトの名無しさん:2013/10/18(金) 23:10:24.56
諦める
472デフォルトの名無しさん:2013/10/18(金) 23:19:36.38
一応意味不明
473デフォルトの名無しさん:2013/10/18(金) 23:26:54.16
>>470
世界で使われるものはUTF-16にするというのがWindowsの考え。
WindowsではUTF-8のMBCSを完全にはサポートしてない。
474デフォルトの名無しさん:2013/10/18(金) 23:30:26.04
たいした考えのない質問だとおもうけど
475デフォルトの名無しさん:2013/10/18(金) 23:35:08.39
なぜ_wfopen_sを使わない
476デフォルトの名無しさん:2013/10/18(金) 23:50:43.03
どうでもよいことかもしれんけど、

char *str
char* str


どっちが正しいの?
どっちが多いの?
で、どっちが好き?
477デフォルトの名無しさん:2013/10/18(金) 23:51:49.84
下が好き
478デフォルトの名無しさん:2013/10/18(金) 23:56:55.58
俺は強硬に上

案件により下を指定されることはあっても
本音はまったくブレない
479476:2013/10/19(土) 00:06:35.03
エラーメッセージを繰り返し見続けてると、どうも下が正しいように思えてくる・・・

それを含めて、自分は下なんだけど、
脳内で、

○メモリの大きさの定義 + どんな変数か
○どんな宣言か  + 単なる変数のラベル

のどちらとして意識するか、なんだろうけど

もっと言えば

char *str[]
char* str[]

だと、上の方が原則に一致してるような気もする
480デフォルトの名無しさん:2013/10/19(土) 00:10:30.52
>>479
>char *str[]
>char* str[]

整形ツールは上になるな。
char *str[], c2, *c2;など見るとわかるが、*は変数に付く。
481デフォルトの名無しさん:2013/10/19(土) 00:11:21.21
int *a, *b, *c; のように一行で宣言するとき意外は下を使ってる
C++では下が多数派な気がする
482476:2013/10/19(土) 00:13:45.43
>>480
java だと、char[] str

とかいけるでしょ。

配列は、変数に付くはずだけど、cだと変数名の後ろになる


char **
はどう説明するの?
483476:2013/10/19(土) 00:16:19.76
>>481
ほんの少しだけ話が反れるけど、

void func( int a, b, c );
ってできないよねぇ。その影響なのかも、とか思っちゃったり。

まあ、>>480の話が正しいような気もするけど。
484デフォルトの名無しさん:2013/10/19(土) 00:18:41.66
char * str
だな。
485デフォルトの名無しさん:2013/10/19(土) 00:22:01.25
ポインタ型なんだから、char* strの方が直観的だと思う
char *str派の人はテンプレートとかプロトタイプ宣言も離すんだろうか
void foo<char *>()とかvoid bar(char *)とか
486デフォルトの名無しさん:2013/10/19(土) 00:23:09.81
C言語だけ使ってたときは上だった
C++使うようになってから俺は下になった
487デフォルトの名無しさん:2013/10/19(土) 00:25:02.08
>>484
乗算じゃないんだから離すのはないな
488476:2013/10/19(土) 00:28:35.35
>>485
確かにそうだよね。
ポインタのポインタは、char** なんだから。
だけど、そうすると、>>480 の話と矛盾が出てくる

だから関数の引数ではまとめて宣言できない、
( = つまりまとめて宣言する方がどちらかと言うと例外 )
七日も知れんけど
489デフォルトの名無しさん:2013/10/19(土) 00:37:04.50
型を意識するとchar* strだけど
複数変数を宣言するときの挙動を考えるとchar *str1, *str2なんだよね
俺は単体の時は型につけるけど、正直どっちでもいい
490デフォルトの名無しさん:2013/10/19(土) 00:39:07.97
>>485
宣言としては変数に付くからchar *a、結果得られるaの型はchar*、って思ってる。
コレが気持悪いと思うなら、LPSTRでも使うかって事になると思う。
491476:2013/10/19(土) 00:43:57.28
>>490
変数に付くんだろうか?

*a は、メモリが格納される領域を宣言することになるんだよね?

int *a

long *a

では、同じメモリの大きさを確保するのであって
所詮「a」 はメモリのアドレスにつけられた名前でしかないんじゃないの?

*a という変数を用意しているわけじゃないし
492デフォルトの名無しさん:2013/10/19(土) 00:49:10.67
関数の引数の話がでてくる意味がさっぱり分からない
493デフォルトの名無しさん:2013/10/19(土) 01:07:54.66
>>491
「*」の修飾の対象が型ではなく変数名って事な。
最終的には全部結合するんだが、演算子の優先順位で型より先に変数名と先に結合してしまうというか。
494デフォルトの名無しさん:2013/10/19(土) 01:12:21.82
const char *const *a, * const b;
495デフォルトの名無しさん:2013/10/19(土) 01:18:40.73
typedef char* char_ptr;
char* str;
char_ptr str;

typedef char *char_ptr;
char *str;
char_ptr str;

どっち?
496デフォルトの名無しさん:2013/10/19(土) 01:30:17.96
readbuf(char* p, size_t n);
readbuf(char_ptr p, size_t n);
これなら、引数名・変数名を省略するときは、スペースと引数名を消すという統一された処理ができる。
readbuf(char*, size_t);
readbuf(char_ptr, size_t);
スペースは引数名・変数名にも型名にも含まれず、両者の間にある区切りという位置付けだからそうなる。
この状態に引数名・変数名を足したくなったら、いずれであってもスペースと名前を足せばよい。

ところが
readbuf(char *p, size_t n);
readbuf(char_ptr p, size_t n);
これだと、統一されたルールで変更しようとすると
スペースは消せない。
readbuf(char *, size_t );
readbuf(char_ptr , size_t );
こうなる。
要は、引数名・変数名の直前の文字は、それがスペースであっても'*'であっても
全て型名の中に含むということ。
スペースは型名と引数名・変数名の間にある区切りではないのでこうなる。
497デフォルトの名無しさん:2013/10/19(土) 01:30:59.49
>>491
配列だとchar str[]がchar[]型になるから、ポインタも同じで、って考えじゃないかね
どっちにしろ直観的じゃないから、Cより後の言語ではこんな宣言しないんだろう
配列は無理だけど、ポインタはchar* strって書くことができるんだから、そうした方がベターじゃないかと思うんだが

>>492
書き方統一したいのが人情ってもんじゃないかね
498デフォルトの名無しさん:2013/10/19(土) 01:39:27.01
型を記述してんのか、型で修飾された変数を記述してんのか、で使い分けてしまえばどうって事無い。
499476:2013/10/19(土) 01:46:52.90
>>498
関数の引数は両方ですな
500476:2013/10/19(土) 01:53:51.09
>>493
ロジカルですな。
う〜ん

>>497
自分もそう思ってるんだけど
ただ、
char[] で宣言できてもよさそうなもんだけど
501デフォルトの名無しさん:2013/10/19(土) 02:01:00.69
パースの歴史的経緯の問題なだけ。
int*a;
int*b;
を、
int*a,b;
と書けるようにしたかったのなら、
int* a;
を必須とする選択も有っただろう。
しかし実際には、
int ary[10];
int x=2;
int x=3;
int*abc = ary + x * y;
のようなパースが難しくなるので、非現実的。
502デフォルトの名無しさん:2013/10/19(土) 02:02:24.87
char* const strみたいな場合は、変数に*付けられないな
503デフォルトの名無しさん:2013/10/19(土) 02:48:37.13
見様見真似のときはchar *strで
ひとときchar* strをこじらせて
痛い目をみてchar *strにもどる

char *strスタイルには避け得ぬバグへの抑止効果があるので絶対に譲れない
504デフォルトの名無しさん:2013/10/19(土) 02:49:18.30
>>503
そんな効果ない
505デフォルトの名無しさん:2013/10/19(土) 03:27:10.23
>>473-475
ありがとうございます
渡される文字をUTF-16に変換する
_wfopen_sを使う
以上2点で解決致しました
506デフォルトの名無しさん:2013/10/19(土) 04:42:55.80
お前ら言語仕様を無視して語ってんじゃねーよ
*はdeclaratorの一部であって
declarationに複数のdeclaratorを書ける文法なんだから
int *unko, *kuso;
と書くのがすじ
507デフォルトの名無しさん:2013/10/19(土) 04:54:16.00
unko = kuso = reinterpret_cast<int*>(506);
508デフォルトの名無しさん:2013/10/19(土) 04:57:24.86
ウンすじ
と聞いてやってきました
509デフォルトの名無しさん:2013/10/19(土) 07:25:35.99
型名に付ける方がしっくり来るけど素直に変数名の方に付けてる
510デフォルトの名無しさん:2013/10/19(土) 08:14:31.66
テンプレートの<int*>を<int *>と書くのは嫌なので
int* a;
だよ。一貫性が大事
511デフォルトの名無しさん:2013/10/19(土) 08:46:04.17
どっちでもわかるから使い分ければいいかなと。
512デフォルトの名無しさん:2013/10/19(土) 08:57:54.96
一貫性言い出したら int* a; なんて a+b / c って書いてるようなもんだぜ?
513デフォルトの名無しさん:2013/10/19(土) 09:01:24.19
などと意味不明の供述を繰り返しており
514デフォルトの名無しさん:2013/10/19(土) 09:12:53.84
俺は int * で統一している。
一貫性が大事。

…だが、議論してまで通すほどの内容ではないと思う。
ぶっちゃけ趣味の問題。
515デフォルトの名無しさん:2013/10/19(土) 09:16:09.98
#define ptr *
516デフォルトの名無しさん:2013/10/19(土) 09:25:05.90
int ptr a = ptr b + ptr c ptr d;
各変数の型を答えよ
517デフォルトの名無しさん:2013/10/19(土) 09:33:12.87
>>481
俺がいる C以来、ポインタを定義するといったら、type* だろw と思ってる
もちろん既出の通り、異論は認める、ソースファイル単位で、郷に従ってるw
518デフォルトの名無しさん:2013/10/19(土) 09:36:47.22
なるほど。
まとめると

  宗  教

ってことやね。これが後の前経と後教の宗教戦争を端にした前後南北朝時代である、と。

○どっちが正しい?
  宗教なので・・・

○どっちが多い?
  C時代は後教が圧倒的優勢
  C++時代に入り前経が勢力を伸ばす
  
○どっちが好き?
  C++時代以降を南北朝時代と呼び宗教戦争が激化
  ハイブリッド源氏も勢力を伸ばす
  邪波教なる宗教も新興し混乱が増す
  地域によっては、踏み絵、改宗なども随所で行われている


-----以下宗教戦争の続きをどーぞ↓↓↓↓
519デフォルトの名無しさん:2013/10/19(土) 09:42:47.27
血で血を洗う戦いの末、事態は緩やかに妥結に向かう
そう、int * a; 教の隆盛である
520デフォルトの名無しさん:2013/10/19(土) 09:44:02.85
std::vector<int *>
これダサい
521デフォルトの名無しさん:2013/10/19(土) 09:47:43.01
みんなー、こっちで雑談始まったよー!

【IT】「C++ よりあらゆる面で優れる」 Facebookが「D言語」の利用を開始、他の大企業も追随か?[10/19]
http://uni.2ch.net/test/read.cgi/newsplus/1382142182/
522デフォルトの名無しさん:2013/10/19(土) 10:00:21.61
>>521
死ね
523デフォルトの名無しさん:2013/10/19(土) 10:04:47.31
アフィブログの臭いがする
524デフォルトの名無しさん:2013/10/19(土) 10:10:28.80
>>521
Facebook よ、お気の毒に
525デフォルトの名無しさん:2013/10/19(土) 11:53:46.61
C++信者からすると
Dはカス
526デフォルトの名無しさん:2013/10/19(土) 12:08:05.57
関数の戻り値には int* fuck()
変数には int *you;
527デフォルトの名無しさん:2013/10/19(土) 12:11:58.04
int *(*hoge)();
ダサッ
528デフォルトの名無しさん:2013/10/19(土) 12:12:46.40
>>526
言語明瞭意味不明
529デフォルトの名無しさん:2013/10/19(土) 12:17:41.63
fack you
530デフォルトの名無しさん:2013/10/19(土) 12:20:00.25
typedef int *hoge;
ん〜?
531デフォルトの名無しさん:2013/10/19(土) 12:30:20.18
>一貫性言い出したら int* a; なんて a+b / c って書いてるようなもんだぜ?

int *a; => a +b /c
532デフォルトの名無しさん:2013/10/19(土) 12:34:11.16
>>521
せめてJava使えよ・・・よりによってDはないだろDは
533デフォルトの名無しさん:2013/10/19(土) 12:44:36.02
>>531

int ( * a )

だから何の問題も無いと思うけど???
534デフォルトの名無しさん:2013/10/19(土) 12:56:49.23
>>526
これだな
一番楽だしこう書いて問題が起きることはまずない
535デフォルトの名無しさん:2013/10/19(土) 12:58:53.58
int *const a;
536デフォルトの名無しさん:2013/10/19(土) 14:08:01.83
>>520
それを言うなら std::vector<std::vector<int *> > っしょ
537デフォルトの名無しさん:2013/10/19(土) 15:58:24.98
>>526
一貫性無さ過ぎてウゼー
538デフォルトの名無しさん:2013/10/19(土) 16:33:53.96
ポインタは int *a;
参照は int & r;
だなぁ、なんでこうなったのかわからん。
539デフォルトの名無しさん:2013/10/19(土) 16:36:20.03
ああ int & r; だとコンパイルエラーだすまんn
540デフォルトの名無しさん:2013/10/19(土) 16:45:49.64
>>538
typedef int *int_pointer;
って書くの?
541デフォルトの名無しさん:2013/10/19(土) 17:07:09.84
>>539
いやメンバ宣言なら通るだる?
542デフォルトの名無しさん:2013/10/19(土) 17:08:08.16
int * & r; のときはどうすんねん
543デフォルトの名無しさん:2013/10/19(土) 17:08:37.34
変わらんだろ
544デフォルトの名無しさん:2013/10/19(土) 17:09:30.32
そんなもんが必要なら設計から見直せ
545デフォルトの名無しさん:2013/10/19(土) 17:11:56.56
てか、それコンパイル通るっけ?
546デフォルトの名無しさん:2013/10/19(土) 17:15:26.94
>>545
どれ?
547デフォルトの名無しさん:2013/10/19(土) 17:19:14.20
548デフォルトの名無しさん:2013/10/19(土) 17:24:54.75
549デフォルトの名無しさん:2013/10/19(土) 17:39:20.89
>>545
どうみても通るとしか
550デフォルトの名無しさん:2013/10/19(土) 18:13:19.92
>>540
それは誰だって
typedef int* int_pointer;
にするだろ、評価の優先順位からいって。
見た目の一致だけみて一貫性とかいってる奴はあほ
551デフォルトの名無しさん:2013/10/19(土) 18:15:54.41
>>550
評価の優先順位という意味不明な供述をしており
552デフォルトの名無しさん:2013/10/19(土) 18:18:35.62
typedef int* int_ptr;
int_ptr a1;
int* a2;

これなら一貫性あっていいな
553デフォルトの名無しさん:2013/10/19(土) 18:19:46.98
int *派が「一貫性」という日本語の意味を
理解していないことは理解したOK
554デフォルトの名無しさん:2013/10/19(土) 18:22:41.54
>>551-553の実体は同じ
555デフォルトの名無しさん:2013/10/19(土) 18:27:07.82
区別が必要なときだけ空白を入れる
一貫性あるね
556デフォルトの名無しさん:2013/10/19(土) 18:37:30.95
臭いものにフタをするのは一貫性とは言わない。
hageがその意味でバカだった。

const int hage, *const unko = nullptr, *const *const kuso = nullptr;
という宣言に於いて
「const int」がtype-specifier-seq、
「*const unko = nullptr」と
「*const *const kuso = nullptr」が
init-declaratorであり、
後者のconstはすぐ左の*に対するオマケ
という文法なのだから、
type-specifier-seqの一部とinit-declaratorの一部を
くっつけようなどという発想は愚か。
557デフォルトの名無しさん:2013/10/19(土) 18:47:31.05
>>553>>556 を頑張って理解してから糞して寝ろ
OK?
558デフォルトの名無しさん:2013/10/19(土) 19:05:47.13
>>556
> type-specifier-seqの一部とinit-declaratorの一部を
> くっつけようなどという発想は愚か。

この部分が飛躍してる
559デフォルトの名無しさん:2013/10/19(土) 19:11:57.63
ポインタの位置論争始めたのだれだよ
終わるわけねーよ
560デフォルトの名無しさん:2013/10/19(土) 19:13:22.40
void hoge(int */*a*/){}
これもなんか妙だし
561デフォルトの名無しさん:2013/10/19(土) 19:21:12.18
>>558
どのあたりが飛躍なのか説明無しに
相手を誹謗するだけのチンカス乙
562デフォルトの名無しさん:2013/10/19(土) 19:23:43.77
>>559
主犯は禿
563デフォルトの名無しさん:2013/10/19(土) 19:23:54.39
>>556
「type-specifier-seqの一部とinit-declaratorの一部を
くっつけようなどという発想」
が「愚か」だと判断される理由は?


。>
> この部分が飛躍してる
564デフォルトの名無しさん:2013/10/19(土) 19:24:38.08
>>556
などと意味不明な供述(r
565デフォルトの名無しさん:2013/10/19(土) 19:26:23.71
boostもSTLも、みんな"*"を左に寄せてるじゃん!

右寄せしたら駄目だよ!
566デフォルトの名無しさん:2013/10/19(土) 19:30:30.09
STLって何ですか?
567デフォルトの名無しさん:2013/10/19(土) 19:49:45.90
Class... Args
Class ...Args
お前らはどっち?
でClassのあとの...ってどう呼ぶんだ
args...
この...は演算子なんだろ? 
568デフォルトの名無しさん:2013/10/19(土) 19:51:26.45
>>567
おまえ演算子の意味わかってないだろ
569デフォルトの名無しさん:2013/10/19(土) 21:38:47.63
>>566
うなだれるリーゼント野郎
570710:2013/10/19(土) 21:45:56.51
>>569
くそ、ちょっと笑ってしまった。
油断してたぜ。
571476=518:2013/10/19(土) 23:22:19.92
>>559

すまん
572デフォルトの名無しさん:2013/10/20(日) 00:44:47.06
templateのおすすめ解説書を教えて下さい
和書の方が嬉しいですが、洋書でも大丈夫です
573デフォルトの名無しさん:2013/10/20(日) 00:52:06.87
Modern C++ Design
574デフォルトの名無しさん:2013/10/20(日) 01:01:49.66
>>559
少なくとも「論」争レベルには達してない。
仕様確認して、あとはツールに任せればいい事を思い込みで言ってるだけ。
575デフォルトの名無しさん:2013/10/20(日) 02:00:58.99
そもそも一行で複数の変数を定義しようってのがC系のアホなとこじゃん
そのアホなルールを通すための文法が>>556なわけで
なんでint a, *b; みたいに 型であるポインタが変数側に来るんだポインタは型じゃないのかよボケってとこから
出発したint* b;って書いて型を明確にしようって意味論的発想を理解できない化石脳な
カス野郎が未だに存在していることが理解不能だよ
576デフォルトの名無しさん:2013/10/20(日) 02:07:44.01
一行で書きたがる奴は、メンバー変数も
int a, *b, *const *c;
みたいに書くのか?
577デフォルトの名無しさん:2013/10/20(日) 02:17:13.16
見た目より規格の意味が大事って論調の>>556みたいな奴は、関数の宣言もint *foo(int *a)とかなんだろうか
変数は複数宣言のために仕方ないってのも分かるが
578デフォルトの名無しさん:2013/10/20(日) 02:24:52.88
宣言や定義をカンマで並べる人は
char *func1(), func2(), **func3();
関数でもこうやって宣言してる?
579デフォルトの名無しさん:2013/10/20(日) 02:35:12.81
根本的にはCの変数宣言の構文が汚いのが悪いな。
それにどう対応するかで意見が分かれる。

俺は意味論的な読みやすさを重視した方がいいな。他の言語と行き来する時に混乱しにくいし。
580デフォルトの名無しさん:2013/10/20(日) 02:37:47.88
「*」が…
もし型ならば、できるだけ左側につけて書く。
もし単項演算子なら、できるだけ右側につけて書く。

「*」を含む変数宣言・定義は一行に複数をまとめない。
まとめたいときはtypedefして「*」をなくす。

最近のライブラリはみんなこうだから、合わせておけば将来安心
581デフォルトの名無しさん:2013/10/20(日) 03:12:25.94
終わらねえw
582デフォルトの名無しさん:2013/10/20(日) 03:49:33.61
一行で複数の変数を定義しようってのは
古い言語だからしょうがない
583デフォルトの名無しさん:2013/10/20(日) 04:12:17.53
モニタの解像度が糞低くて縦に間延びできなかったんだよな
584デフォルトの名無しさん:2013/10/20(日) 05:20:49.68
>>470
コードページ間で変換を行うAPIはC標準じゃなくてWindows API側にある。
ここより適したスレで質問するべき
585デフォルトの名無しさん:2013/10/20(日) 05:25:47.85
>>584
fopen_sにUTF8でファイル名指定したいという人に
文字コード変換は他で訊けとはこれ如何に。
しかしfopen_sとかキモイ関数はC++14にも
入るんだよなきっと
586デフォルトの名無しさん:2013/10/20(日) 05:47:13.71
>>584
現在のロケール→ワイド文字の変換は
mbstowcs,mbsrtowcs
mbstowcs,wcsrtombs
mbrtowc,wcrtomb
snprintf(out,len,"%ls",in),swprintf(out,len,"%s",in)
で出来る筈で、この辺はC99で有効なはず。
変換したい文字コードのロケールがあれば、
setlocaleとこれらで全て相互変換出来る筈だが
・・・実際実用に出来るかというと・・・なぁ・・・
587デフォルトの名無しさん:2013/10/20(日) 05:55:24.20
>>586
一つ前のレスも読めない文盲はしんでいいよ
588デフォルトの名無しさん:2013/10/20(日) 06:01:26.54
>>583
昔とは事情が違うけど、今でも縦が不足気味なのに対して横が余ってね?てか、横ダダ余りすぎというかw

横長すぎだろ?と思って普段は↓みたいに分けてるけど・・・・・・

auto filter = [are, kore, sore](int dore, int dare, int ore){ return long_long_expression; };
auto begin = boost::make_filter_modoki(filter, id_0, id_1);

どうせ横ダダ余りなんだから、いっそ開き直って↓って書いてもいいんじゃなかろうか?と悩んでしまう。

auto begin = boost::make_filter_modoki([are, kore, sore](int dore, int dare, int ore){ return long_long_expression; }, id_0, id_1);
589デフォルトの名無しさん:2013/10/20(日) 06:21:02.76
規格より俺のコードの見た目が大事っていう
577みたいなバカが設計すると
cout << kuso
みたいなウンコ禿ライブラリができあがる
590デフォルトの名無しさん:2013/10/20(日) 06:24:21.25
>>587
585-586は欠片も重複して無いんだが、読んでたらどーなるんだ?
591デフォルトの名無しさん:2013/10/20(日) 06:39:20.00
@>>470と関係無いレスが無くなります
A現在のロケールで表現できない文字コード間の変換ができるようになります
BC++スレでC99という関係無い言語を持ち出すことが減るでしょう
CUTF-8というWindowsのsetlocaleでは制限を受ける文字コードが扱いやすくなります
D彼女ができます
Eswprintfの使い方を間違えなくなります
F宝くじで1億円あたるかも?
592デフォルトの名無しさん:2013/10/20(日) 06:41:50.77
>>589
リーダブルなコードを書くためには見た目が大切だよ

C言語は規格が腐っていることは既に散々言われてることだけど
今更変えることが出来ないから新規コードは書き方で工夫していこうってこと
規格でgotoを自由に使えるからといってスパゲッティなコードは
書くのは良くないという共通認識と同じレベルだよね

coutは演算子を自由にオーバーロードできるという規格をフル活用して作った
プロモーション的なものだからその反論はブーメランなんじゃないかな

これもgotoと同じでデフォルトの演算子の意味とかけ離れた再定義なんて
してはいけないことという共通認識が現在は出来てるよね
593デフォルトの名無しさん:2013/10/20(日) 07:06:49.77
>>592
そんなこと言うからDSLちゃん拗ねちゃったじゃない!慰めてあげて><
594デフォルトの名無しさん:2013/10/20(日) 07:08:30.43
>リーダブルなコードを書くためには見た目が大切

一貫性のない書き方は可読性を下げると主張する人に対して
「俺の書き方の方が可読性が上」の前提でレスするとか、
どうしたらこういうおつむになるんだろ
595デフォルトの名無しさん:2013/10/20(日) 08:14:12.15
>>594
> 一貫性のない書き方は可読性を下げると主張する人に対して

それはどれだよ
596デフォルトの名無しさん:2013/10/20(日) 08:37:27.88
「見た目が大切」はバカとの主張(>>589)に対して、
「見た目が大切」というレスポンス(>>592)。
ここまでは俺にもわかる。

>>594は一体何を言っているんだ…
597 ◆QZaw55cn4c :2013/10/20(日) 10:04:52.45
>>578
一行でまとめた方がいいときにはね。
一行でまとめてすっきりさせたり、一個ずつコメントを付けておいたり、妙な縛りにとらわれずに変幻自在にやってるよ
598デフォルトの名無しさん:2013/10/20(日) 10:08:07.70
結論:全部typedefだ
599デフォルトの名無しさん:2013/10/20(日) 10:12:27.79
>>597
チームで開発したことない奴はコーディングルールに縛られなくて良いよな!
あ、チームって言うのは未来の自分(=他人)も含んでの意味だからー
オナニー開発は自分のコードをメンテしなくていいのも利点だのぉ
600デフォルトの名無しさん:2013/10/20(日) 10:18:34.60
>>597
お前は百人に一人すらいない少数派だと思うよ
601 ◆QZaw55cn4c :2013/10/20(日) 10:18:49.03
>>599
コーディングルールによっては、「変数定義/宣言は一行にひとつで」とかあるんですか?アマチュアからみてもちょっと信じられない縛りですね
代表的なコーディングルールにはなにがあるのでしょうか?
602デフォルトの名無しさん:2013/10/20(日) 10:21:07.23
>>601
変数定義じゃなくて、関数定義の話だろう
603デフォルトの名無しさん:2013/10/20(日) 10:21:36.08
>>594のレスに可読性はないが、何となく日本語みたいなものが表示されているので、規格は満たされているといえる
604デフォルトの名無しさん:2013/10/20(日) 10:22:07.33
>>602

関数定義じゃなくて、関数宣言の話
605デフォルトの名無しさん:2013/10/20(日) 10:30:26.33
>>578
> 宣言や定義をカンマで並べる人は
> char *func1(), func2(), **func3();
> 関数でもこうやって宣言してる?

>>597 ◆QZaw55cn4c
> 一行でまとめた方がいいときにはね。


>>599
> チームで開発したことない奴はコーディングルールに縛られなくて良いよな!


>>601 ◆QZaw55cn4c
> コーディングルールによっては、「変数定義/宣言は一行にひとつで」とかあるんですか?アマチュアからみてもちょっと信じられない縛りですね



お前、なに途中で話を変えてんだよ
デタラメ過ぎだろ
606デフォルトの名無しさん:2013/10/20(日) 10:36:41.13
>>601
特に強制されたわけじゃないが、いつのまにか一行一宣言になったな、俺は。
複数の宣言を併記してもタイプ量以外メリットないし。
607デフォルトの名無しさん:2013/10/20(日) 11:03:20.80
おや昨日まで一貫性がとか言ってた人
規格をもとに論破されて
可読性に話をすり替えているようですね
[[unko]] int const a alignas(100), *[[kuso]]const pb alignas(100) [1][[hage]], *[[kuso]]const pc alignas(100) [1][[hage]];
はどうするんだっけ? 一行に書かないようするん?
608デフォルトの名無しさん:2013/10/20(日) 11:06:01.31
論破って何だよw
バカは死ねよ
609デフォルトの名無しさん:2013/10/20(日) 11:32:16.26
test<int (*const)[8]>
test<int(*const)[8]>
どっちが正しい?
610デフォルトの名無しさん:2013/10/20(日) 11:38:40.00
>>601
そうでもないと思うけどね。
俺もいつの間にか一行一変数が習慣になっているなあ。
定義時初期化を心がけてるからだと思うんだけど、一行一変数の方が楽なんだよね。
611デフォルトの名無しさん:2013/10/20(日) 11:45:59.46
ISO/IEC 14882:2011自体がコーディングルールが
全く統一されていないUNKOです
612デフォルトの名無しさん:2013/10/20(日) 12:02:41.50
コードに芸術性を持たせるためには、
1行1mean が必須かな。
だから、1行1変数が良いと思うよ。


まあ芸術的感覚がない人には理解できんよ
613デフォルトの名無しさん:2013/10/20(日) 12:07:49.10
>>599
未来の自分ってなんだよw
その未来に自分が生存しているなんて保障はないだろ
614デフォルトの名無しさん:2013/10/20(日) 12:08:44.79
突っ込む所はそこではない
615デフォルトの名無しさん:2013/10/20(日) 12:12:16.32
599がコードを書いた。
1時間後に自分でコードを修正した。
1日後にも修正予定。
 ⇒ 3人によるチーム開発と599は自認

もう599が哀れで仕方ない
616デフォルトの名無しさん:2013/10/20(日) 12:25:29.51
599はゴミクズにレスするという致命的なミスを犯した
哀れすぎる 今すぐ死んだ方が良い
617デフォルトの名無しさん:2013/10/20(日) 12:32:47.85
/*
未来の自分へ

やぁ、久しぶり。君が無事にこのコメントを読んでいるということは、デバッグはうまくいったんだね。
その間いろいろ苦労をかけたと思うけど、仕方がなかったんだ。許して欲しい。
君も知っている通り、このコードは恐ろしいバグに侵されていて現代の技術では直す術がなかった。
だから、未来の新しい技術でこの問題が解決できるときまで僕は眠ることにする。

おやすみ。

*/
618デフォルトの名無しさん:2013/10/20(日) 12:37:44.75
元ネタが思い出せない…
619デフォルトの名無しさん:2013/10/20(日) 12:38:23.65
/******
天気が悪いのでまったり


******/
620デフォルトの名無しさん:2013/10/20(日) 12:46:59.19
/*/

なんか昼間から酒のみたくなってきた

/*/
621デフォルトの名無しさん:2013/10/20(日) 12:47:45.48
>>617
パンダの霊にでもとりつかれてんじゃねーか、兄ちゃん
622デフォルトの名無しさん:2013/10/20(日) 12:49:46.77
// ToDoリスト
// 寝る
// parseInt の修正
// trim関数は必要?
// 飯
// 2ch  (削除予定)
//
623デフォルトの名無しさん:2013/10/20(日) 12:59:24.14
テンプレなのかなんなのかダメージが一定量を超えると粘着しだす奴いるな
624デフォルトの名無しさん:2013/10/20(日) 13:00:20.33
#if 0
// ここをコメントアウトするとなぜかうごく
...
#endif
625710:2013/10/20(日) 13:16:20.53
> テンプレなのかなんなのかダメージが一定量を超えると粘着しだす奴いるな

>>623 とかな
626デフォルトの名無しさん:2013/10/20(日) 13:21:22.15
うんこに触ったえんがちょだからしょうがない
627デフォルトの名無しさん:2013/10/20(日) 13:33:28.54
>>605
つまり、一行でまとめる人は脳味噌が腐ってると?
628デフォルトの名無しさん:2013/10/20(日) 14:36:05.23
Cで書かれた関数ポインターを引数にとる関数に、関数オブジェクトを渡す方法ってありますか?

#include <iostream>

typedef int (*FPtr)(int);

int add(FPtr f, int x, int y) {
return (*f)(x)+(*f)(y);
}

int func(int x) {
return x+1;
}

struct func2 {
const int a;
func2(int a): a(a) {}
int operator()(int x) const { return a*x; }
};

int main()
{
std::cout << add(func,2,3) << std::endl;
func2 f2(4);
//std::cout << add(f2,2,3) << std::endl;
}
629デフォルトの名無しさん:2013/10/20(日) 15:12:00.46
>>628
無い
630デフォルトの名無しさん:2013/10/20(日) 15:12:11.59
ある
631デフォルトの名無しさん:2013/10/20(日) 15:12:48.89
ないある
632デフォルトの名無しさん:2013/10/20(日) 15:15:10.74
ポインターってゆるゆるだから、実行時に何とかなると思ったんですけどw
633デフォルトの名無しさん:2013/10/20(日) 15:18:49.53
C++のラムダの仕様嫁
無理
仕組みを考えればできないことは明らか
634デフォルトの名無しさん:2013/10/20(日) 15:19:25.33
なるわけねーーだろたわけ
635デフォルトの名無しさん:2013/10/20(日) 15:19:27.35
汚いけどグローバル変数介すしかないんじゃないの

FunctionObject gFunc;
Result delegate(Arg val){
 return gFunc(val);
}

int main(){
 c_function(delegate);
}
636デフォルトの名無しさん:2013/10/20(日) 15:26:21.93
std::function使えばいいだろ
何でも入るし
637デフォルトの名無しさん:2013/10/20(日) 15:34:42.25
libffiでクロージャ作れば可能
638デフォルトの名無しさん:2013/10/20(日) 15:37:42.89
>>633
ラムダなら余裕だろ
639デフォルトの名無しさん:2013/10/20(日) 15:39:45.17
>>636
これ何かおかしいですか?セグフォになるんですけど・・・

#include <iostream>
#include <functional>

typedef int (*FPtr)(int);

int add(FPtr f, int x, int y) {
return (*f)(x)+(*f)(y);
}

int func3(int a, int x) {
return a*x;
}

int main()
{
std::function<int(int)> f3 = std::bind(func3,std::placeholders::_1,4);
std::cout << add(*f3.target<FPtr>(),2,3) << std::endl;
}
640デフォルトの名無しさん:2013/10/20(日) 15:47:21.69
>>639
アホかそんなことやったら落ちるに決まってんだろ
ttp://ideone.com/FEmUgG
641デフォルトの名無しさん:2013/10/20(日) 15:51:50.09
>>640
いや、addはこっちでいじれないライブラリに入っているので、
呼び出し側でなんとかしたいのです。
642デフォルトの名無しさん:2013/10/20(日) 15:53:34.07
bindしても元のポインタの引数の数が変わるわけじゃない
Cの関数ポインタ相手に変形は無理
643デフォルトの名無しさん:2013/10/20(日) 15:56:00.60
そうですか・・・
引数の型と種類は知っている前提でもなんとかなりませんか?
bindほど一般的な操作は求めていないので。
644デフォルトの名無しさん:2013/10/20(日) 15:57:50.41
どうしようもないな
645デフォルトの名無しさん:2013/10/20(日) 15:58:11.85
人生から見つめなおせ
646デフォルトの名無しさん:2013/10/20(日) 16:01:27.33
>>643
Cの関数ポインタは関数のコードのアドレスそのものであり、付随するデータを受け渡す仕組みはない。よって付随するデータを受け渡す仕組みは関数ポインタを受け取るライブラリー側が別途提供するべきであり、もしそれがないならそれはそのライブラリーの欠陥と言える。
647デフォルトの名無しさん:2013/10/20(日) 16:04:16.71
C++相談室なのに普通の質問にくだらない煽り入れる奴はなんなん
648デフォルトの名無しさん:2013/10/20(日) 16:05:36.05
そうだね
ごめんね
649デフォルトの名無しさん:2013/10/20(日) 16:06:56.23
>>646
ありがとうございます。そもそもできないということが理解できなかったのですっきりしました。

>>647
(C++は怖い人がたくさんいるということを知らずに)初心者が見たら恐ろしくて質問どころじゃないですね・・・
650デフォルトの名無しさん:2013/10/20(日) 16:09:17.84
現実的なのは
>>635
ぽいですね。
651デフォルトの名無しさん:2013/10/20(日) 16:27:08.77
>>650
使いまわすならmutexを忘れずにね
652デフォルトの名無しさん:2013/10/20(日) 16:37:16.79
ポインタって見るだけで再燃しやしないかとハラハラする
653デフォルトの名無しさん:2013/10/20(日) 16:40:17.83
ボッ
654デフォルトの名無しさん:2013/10/20(日) 16:41:18.17
関数ポインタの*って右に書く?それとも左?
655デフォルトの名無しさん:2013/10/20(日) 16:43:22.13
どちらでも良い。
656デフォルトの名無しさん:2013/10/20(日) 16:43:29.75
657デフォルトの名無しさん:2013/10/20(日) 16:44:33.81
functionalとかbindってC++11から?
関数オブジェクト関係てどこまでが昔のC++かわからん
658 ◆QZaw55cn4c :2013/10/20(日) 17:59:57.20
>>602
>char *func1(), func2(), **func3();
え?これが関数定義?

>>604
え?これが関数宣言?
659 ◆QZaw55cn4c :2013/10/20(日) 18:01:45.96
>>606 >>610
そうなんですね.参考にさせてください.
660 ◆QZaw55cn4c :2013/10/20(日) 18:04:47.47
>>617
これ,どこに書くの?
デバッグがおわって初めて見えるところって?
661デフォルトの名無しさん:2013/10/20(日) 18:07:41.39
>>658
どうみても関数宣言だろ
662 ◆QZaw55cn4c :2013/10/20(日) 18:09:00.77
>>658
>>604
ごめんなさい,まがうことなき関数宣言でしたね.char (**func3)(); とかと区別が付いていませんでした
663デフォルトの名無しさん:2013/10/20(日) 18:16:55.53
つまり
char *strchr(const char *, int), strstr(const char *, const char *);
のような
一行で複数の関数を宣言することを良しとしないなら、
メンバー変数やローカル変数の宣言・定義でも同じルールを適用して
一行ずつ分けておけってんだ。
664デフォルトの名無しさん:2013/10/20(日) 18:18:05.52
訂正
>>663
> char *strchr(const char *, int), strstr(const char *, const char *);

char *strchr(const char *, int), *strstr(const char *, const char *);

こうだな。
カンマ区切りの複数宣言は最低だな!
665 ◆QZaw55cn4c :2013/10/20(日) 18:49:35.35
>>618
かまいたちの夜?
666デフォルトの名無しさん:2013/10/20(日) 19:11:53.70
かまい?それ誰?
667デフォルトの名無しさん:2013/10/20(日) 19:37:41.93
構い ワ行活用ですね。
668デフォルトの名無しさん:2013/10/20(日) 20:41:24.64
>>662
>>602にも謝れや
669デフォルトの名無しさん:2013/10/20(日) 20:44:05.70
ごめんなさい
670デフォルトの名無しさん:2013/10/20(日) 20:45:55.53
ほんとすまん
671デフォルトの名無しさん:2013/10/20(日) 20:53:54.67
いやーわりいわりい
672デフォルトの名無しさん:2013/10/20(日) 22:20:19.04
さーせんっした
673デフォルトの名無しさん:2013/10/20(日) 22:36:59.62
左遷した
674デフォルトの名無しさん:2013/10/20(日) 22:41:15.94
北国の〜
675デフォルトの名無しさん:2013/10/20(日) 22:49:06.38
JR北海道
676デフォルトの名無しさん:2013/10/20(日) 23:06:47.04
ん?また朝鮮人低脳Qが湧いていたのか
677デフォルトの名無しさん:2013/10/21(月) 03:12:38.04
>>643
インラインアセンブラ使用可って条件でいいなら無理やり出来なくもない
ただしこれはWindows(32bit)でしかテストしてない
ttp://ideone.com/DzKAXy
678デフォルトの名無しさん:2013/10/21(月) 05:13:46.71
>>677
それくらいしか手は無いわな。
けど汎用性持たせる努力しすぎだろ、なげぇww
679デフォルトの名無しさん:2013/10/21(月) 07:05:51.62
インラインasm無しで同じことやってる怪しいコードを見つけた
http://fscked.org/projects/minihax/c-functor-c-function-pointer-conversion
http://fscked.org/proj/minihax/autocode/functorptr.cc
680デフォルトの名無しさん:2013/10/21(月) 07:59:47.31
>>679
・closure()の長さがMAX_FCN_SIZE(128)を超える
・closure()の中で別の関数と共有された相対jmpがある
・closure()の中でスタック検査などで相対アクセスが挿入される
・thisptr=(Functor *)MAX_INTの即値が分割・変形される(MIPSとかでよくあるアレや、0xFFの符号拡張等)
・mallocで確保したメモリ領域の実行可能フラグが無く、それを検査される
などの問題が無ければOK。
681デフォルトの名無しさん:2013/10/21(月) 08:15:07.90
>>680
最後以外>>677と条件変わらなくね
同一環境のコードだから分割とかが問題になりそうもないし
682デフォルトの名無しさん:2013/10/21(月) 11:46:59.31
>>681
>>677だとdeclspec(naked)やomit-frame-pointerがあるからかなり確実性が上がってるように見える
・プロローグコード無しならコードサイズはまず膨れない
・関数本体がjmp先って事でも無い限り、全部インラインアセンブリなのでコードの共有は無い
・スタック検査は無効化してあるので挿入されない
・コードを含む構造体の相対アクセスなのでコード自体を変更しないから問題ない
・PAGE_EXECUTE_READWRITEしてるので問題ない

分割ってのはMIPSだかの固定長命令セットで上位movと下位movに分割される奴だけど、
そういうCPUをサポートするんでも無ければ問題ない・・・けど符号拡張はx86でも起きるぞ。
MOV EAX,0xFFFFFFFFがOR EAX,-1に変形されるのなんて良くある事。

関数本体がjmp先にあるってケースくらいじゃないかな、677で怖いのは。

俺は、DWORD __declspec(naked) Func(DWORD){__asm{
    cmp [esp+4],0
    jnz J1
    mov eax,offset L0
    ret
  J1: mov eax,offset LE0
    sub eax,offset L0
    ret
  L0: コード本体
  LE0:}}ってやって長さと位置もインラインアセンブリ中で求めてた。
683デフォルトの名無しさん:2013/10/21(月) 13:22:39.67
>>682
処理系が同じなら同じ値なんだから別に起きても大丈夫でしょ。
684デフォルトの名無しさん:2013/10/21(月) 15:48:39.31
関連
VCのx64クロスコンパイラは、インライン汗受け付けないとかじゃなかったっけ
どういうことかというと、めんどくさいぞこらMS手抜きしないで仕事しろ
一応フォローすると、ml64が添付になってるのでそれ使えぽい

gccいけるとこは、自由にゴリゴリ書いてもらうとして、Win32/64の場合、
ATLにの、this埋め込み付きスタブ関数生成関数があった希ガス
685デフォルトの名無しさん:2013/10/21(月) 19:36:34.31
x64インラインアセンブラが廃止された理由

http://www.officedaytime.com/tips/asm64/caution.html

これじゃメリットがないわな
686デフォルトの名無しさん:2013/10/21(月) 19:46:34.26
めんどくせえ
687デフォルトの名無しさん:2013/10/21(月) 19:50:34.96
> スタックポインタが動くような操作をしていいのは関数の最初と最後の部分だけ。その部分は「prolog」「epilog」と呼ばれ、やっていいことが決まっている。

うそくせえ
allocaどうすんだよ。
688デフォルトの名無しさん:2013/10/21(月) 20:24:33.98
スタックポインタは触るなって?
とても信じがたいねえ gcc とかでもだめなの?なんでだめになったの?
689デフォルトの名無しさん:2013/10/21(月) 22:19:07.35
組み込みで64bitとかないし
コンパイラ開発してるんでもなきゃ
いまどきインラインアセンブラなんか書かんだろ

誰が使ってるんだ
690デフォルトの名無しさん:2013/10/21(月) 22:31:21.53
epilogとprologを生成してくれるから(non naked)ありがたいんじゃないか、
結局なんで不親切になってんだよw

amd64のいい逆汗ないかねえ、無料で
有償品でよければIDAが有名だが
691デフォルトの名無しさん:2013/10/21(月) 22:33:14.35
組み込みで64bits使ってるんですよ…
692デフォルトの名無しさん:2013/10/21(月) 23:49:57.20
>>683
いやあの起きたらif(*(Functor**)end_ptr == (Functor*)MAX_INT)が成立しないんだが。
>>687-688
そもそもコレだけ解説しといてそれがなんと呼ばれる呼び出し規約かすら説明して無い。
Tipsや慣例(ミス削減のための規則含む)に基づく話がごっちゃになってるんじゃない?
693デフォルトの名無しさん:2013/10/22(火) 20:15:12.14
俺はないけど、
仕事でwinの64bitでインラインアセンブラ/アセンブラを使ったプログラムを作成したことある?
あるなら、どんなのをアセンブラ書いた?
694デフォルトの名無しさん:2013/10/22(火) 22:09:56.55
USBプロテクトとかじゃないの?代表的な物は
695デフォルトの名無しさん:2013/10/23(水) 12:08:25.00
struct stat Stat;
stat(name,&Stat);

誰だよこんなうんこ考えたやつ
696デフォルトの名無しさん:2013/10/23(水) 12:40:32.69
なにそれ
697デフォルトの名無しさん:2013/10/23(水) 13:05:32.13
struct a A; // struct a{};
a(b,&A); // void a(int,struct a*){}
てことかな?
698デフォルトの名無しさん:2013/10/23(水) 20:17:01.11
名前と同じ構造体の関数用意して使わせるとか
気が狂ってるとしか思えない
699697:2013/10/23(水) 20:30:15.92
狂ってるけど何か文句ある?
700デフォルトの名無しさん:2013/10/23(水) 20:45:42.96
>>695
標準関数が標準の構造体と同じ名前って
なかなか無いよな
それ設計した奴は誰?
701デフォルトの名無しさん:2013/10/23(水) 21:20:48.97
まだ勉強中でなんですが、例外処理について皆さんの意見をお聞かせください
エラー処理をする際に、その都度エラーメッセージボックスを表示させて
returnさせているのですが、
throwしてcatch{}にまとめた方がいいような気がしています
しかし、文字列を直接throwするのはなんだかおかしいんじゃないかと思っています、
例)
try
{
// 例外が起きそうな処理
throw "エラーだよ"
} catch (CString msg) {
AfxMessageBox(msg);
}
エラーメッセージは自分で決めたい場合もあると思うのですが、
どのようなエラー処理がベターなのか
色々サイトを見てみましたがつかめずにいます。
Cexxeptionを継承した自作クラスを作るべきなんでしょうか?
皆さんはどんなエラー処理をしてますか?
702デフォルトの名無しさん:2013/10/23(水) 21:26:03.06
>Cexxeptionを継承した自作クラスを作るべきなんでしょうか?
無論。面倒ならCExceptionそのまま
703デフォルトの名無しさん:2013/10/23(水) 21:35:14.55
>>701
throw の引数はクラスにしておく
スーパークラスとしての exception クラスをつくっておき、個々のエラーは exception を個々に派生させる
704デフォルトの名無しさん:2013/10/23(水) 21:46:39.89
>>701
例外クラス間のツリー構造を設計するのが
システム全体を設計する中での最も重要な仕事なのだよ
705デフォルトの名無しさん:2013/10/23(水) 22:00:41.43
MFCだとCExceptionっての使う方がいいんだろうか
706デフォルトの名無しさん:2013/10/23(水) 22:13:46.39
CExceptionは規格策定前のRTTIのオーバーヘッドが問題視されていた時代に
独自のRTTI相当機能を実装するための親クラスだったような。
まあMFC使うなら作法には従っておいた方がいい。
deleteの仕方が独特でキモイけど。
707デフォルトの名無しさん:2013/10/23(水) 22:19:09.48
> deleteのほうがキモい
同感
708デフォルトの名無しさん:2013/10/23(水) 22:20:15.13
delete必要だっけ?
709デフォルトの名無しさん:2013/10/23(水) 22:23:18.48
正直 CException 例外の正しい投げ方がよく分からない
new して投げるの?
710デフォルトの名無しさん:2013/10/23(水) 22:33:44.46
yes
711デフォルトの名無しさん:2013/10/24(木) 00:45:40.98
なら CFile::Open で例外投げたい時は new して渡して、
失敗してたら THROW、成功してたら delete なのか
面倒だな・・・

END_CATCH に delete がなかったと記憶してるけど
delete はどうするの?
712デフォルトの名無しさん:2013/10/24(木) 00:55:59.92
catch (CException* e) {
e->Delete();
}
ってやるらしい
713デフォルトの名無しさん:2013/10/24(木) 01:00:00.95
>>712
うへえ
じゃあこれやってないとリークすんの?
714デフォルトの名無しさん:2013/10/24(木) 01:20:58.75
例外処理でヘマするとリークするなんて仕様は愚の骨頂だな
715デフォルトの名無しさん:2013/10/24(木) 01:33:31.22
C++では掴まざるを得ないような例外を投げないでくださいお願いします
716デフォルトの名無しさん:2013/10/24(木) 07:33:57.37
CATCH 内で RAII してるわけじゃなくて?
717デフォルトの名無しさん:2013/10/24(木) 15:25:33.16
struct hoge
{
hoge( int ){}
};
hoge h( int() ); // warning C4930: 'hoge h(int (__cdecl *)(void))': プロトタイプされている関数が呼び出されませんでした (変数の定義が意図されていますか?)

なぜ警告でますか?
警告でないようにするにはどうすればいいですか
718デフォルトの名無しさん:2013/10/24(木) 15:31:16.23
>>717
int()の中に引数がないのはなんで?
719デフォルトの名無しさん:2013/10/24(木) 15:39:07.31
>>717
hoge を返す h という関数を宣言したいということでよろしいか?
720デフォルトの名無しさん:2013/10/24(木) 15:44:16.57
hoge h(0);
だと平気なのはなんでですか
721デフォルトの名無しさん:2013/10/24(木) 15:50:07.01
>>717-720
迷惑だから他でやれ
722デフォルトの名無しさん:2013/10/24(木) 15:54:34.51
>>717の頭が悪すぎてワラタw
プログラム以前に知能が低いw
723デフォルトの名無しさん:2013/10/24(木) 16:00:04.96
>>720
hogeを覚えたり調べたりする暇はあってもC++の入門書を読む暇はないんだね〜へぇ〜すごく頭良さそう



毎日2〜3時間ゲームやってるくせに
毎日「忙しい忙しい」と言ってる奴が昔会社にいた
うだつのあがらない馬鹿だったけどね
724デフォルトの名無しさん:2013/10/24(木) 16:05:58.20
typedef int(*returns_int)();
hoge h(returns_int);
にすればいいんじゃない
725デフォルトの名無しさん:2013/10/24(木) 16:14:10.79
>typedef int(*returns_int)();
>hoge h(returns_int);
底辺ドカタだとこんなコード書いても平気なんだなw
typedefwwww
726デフォルトの名無しさん:2013/10/24(木) 16:19:32.94
初心者に変な癖つけさせるのが狙いなんだろ
727デフォルトの名無しさん:2013/10/24(木) 16:33:23.61
新卒やニートを雇うと>>724みたいな糞コードを平気で書いてくるマジキチがたまにいるけど。
こういうのを鵜呑みにしてるんだろうな。
生きてる価値がない。
728デフォルトの名無しさん:2013/10/24(木) 16:48:28.59
価値がないだけならまだしも迷惑
729バカ晒しage:2013/10/24(木) 17:18:34.25
724:デフォルトの名無しさん :2013/10/24(木) 16:05:58.20 [sage]
typedef int(*returns_int)();
hoge h(returns_int);
にすればいいんじゃない
730デフォルトの名無しさん:2013/10/24(木) 18:52:41.67
>>717
int()
↑これは何がし.たいの?
731デフォルトの名無しさん:2013/10/24(木) 18:57:50.13
hoge頑張れ!
732デフォルトの名無しさん:2013/10/24(木) 18:58:10.50
>>730
荒らしにレスするな
お前も荒らしになるぞ
733デフォルトの名無しさん:2013/10/24(木) 18:59:28.69
>>732
お前だけが荒らしなので大丈夫(^^)
734デフォルトの名無しさん:2013/10/24(木) 19:02:09.45
int tv{}; // ←primitiveにデフォ値があるんか?   と
hoge h{tv}; //で、なんじゃねーの
735デフォルトの名無しさん:2013/10/24(木) 19:04:58.98
intにもデフォ値があるの知らないの?
736デフォルトの名無しさん:2013/10/24(木) 19:05:28.21
>>733
よう荒らし
自己紹介乙
737デフォルトの名無しさん:2013/10/24(木) 19:25:04.87
今からこのスレでは
typedef hoge int;
が標準となります。素のintは使用禁止です。
738デフォルトの名無しさん:2013/10/24(木) 19:32:11.92
>>737
つまんねーhageだな
shineばいいのに
739デフォルトの名無しさん:2013/10/24(木) 19:38:15.22
誰がハゲやねん!
740デフォルトの名無しさん:2013/10/24(木) 19:48:30.70
ハゲじゃないよ、ヘイジだよ
741デフォルトの名無しさん:2013/10/24(木) 20:08:16.40
HANDLE hAge;
742デフォルトの名無しさん:2013/10/24(木) 20:09:15.01
アホーとは俺のことかとエイホ(Aho)言い
743デフォルトの名無しさん:2013/10/24(木) 20:17:49.37
>>737
わざわざコードを一行増やす理由、
及び
わざわざ文字数の多い文字列に置き換える理由、
が不明瞭

hoge厨は精神異常
744デフォルトの名無しさん:2013/10/24(木) 20:20:14.07
>>737
intは iHogeにしろ
745デフォルトの名無しさん:2013/10/24(木) 20:22:34.50
>>730
何もしたくない。int型なのは単なる例
コードの意味を聞いてるんじゃなくて現象を聞いてるの
746デフォルトの名無しさん:2013/10/24(木) 20:33:24.17
たとえば
vector<CString> hoge()[
747デフォルトの名無しさん:2013/10/24(木) 21:02:29.23
>>717
hoge h((int()));
748デフォルトの名無しさん:2013/10/24(木) 21:20:51.54
>>745
コンパイラには>>719として解釈されるが
>>720の可能性があるので警告してるんでしょ
>>720にしたいならそうすればいいし
>>719なら>>724にすれば警告はなくなる
749デフォルトの名無しさん:2013/10/25(金) 13:59:19.52
Effective STLに気持ち悪い例が載っているな

ifstream file("test.dat");
list<int> data(istream_iterator<int>(file), istream_iterator<int>());

綺麗な顔してるプログラムだろ?
これ変な動きするんだぜ?
750デフォルトの名無しさん:2013/10/25(金) 18:37:00.59
> istream_iterator<int>()
どうしてこんなKUSO仕様がISOで承認されたのか理解に苦しむ
751デフォルトの名無しさん:2013/10/25(金) 20:59:41.98
他にどうすればよかったと思う?
752デフォルトの名無しさん:2013/10/26(土) 01:03:06.36
>>750
C++には糞仕様大好きhoge使いが多いからよ
753デフォルトの名無しさん:2013/10/26(土) 08:35:34.62
>>750
istream_iterator<int>::end()
754デフォルトの名無しさん:2013/10/26(土) 09:49:51.33
std::for_eachを使う理由って何ですか?

普通にforで回しちゃなぜいけないのですか?
一々関数オブジェクトなんか作成しなきゃいけないのに・・・
notなんてifの中の条件を!すればいいだけでしょ?
755デフォルトの名無しさん:2013/10/26(土) 12:24:55.74
>>754
1行で簡潔に書くため
ラムダがサポートされているんだから関数オブジェクトもすっきり書ける
756デフォルトの名無しさん:2013/10/26(土) 14:06:13.63
決まりきった単純なファンクタならそうできる。
いろいろ使いまわせるファンクタなら独立して書く価値がある。
757デフォルトの名無しさん:2013/10/26(土) 14:19:38.31
せっかくイテレータがあるのに常にforでまわしてるってのは
C++以外は割とイレギュラーだもんな
758デフォルトの名無しさん:2013/10/26(土) 14:21:07.72
757が何を言っているのかわからない
759デフォルトの名無しさん:2013/10/26(土) 14:22:13.52
しかしstd名前空間が込み合いすぎだ
安心してusing namespace std;できる程度にとどめてほしかった…
760デフォルトの名無しさん:2013/10/26(土) 14:27:41.34
for_each(c.begin(), c.end(),
[](string &s){cout << s << endl;});

for ( auto &s : c )
cout << s << endl:

こんな感じだっけ?
761デフォルトの名無しさん:2013/10/26(土) 14:37:06.27
package文とimport文があれば、気兼ねなく名前空間作れるのに。
C++だと実装むずかしいのかな。
762デフォルトの名無しさん:2013/10/26(土) 14:39:56.82
forなのにセミコロンがないなんてっ!
++11のforはなんか気持ち悪い
いまさらforeachを予約語にするのも・・・てことか
763デフォルトの名無しさん:2013/10/26(土) 14:41:18.41
>>759
using namespace std;はやってもせいぜい関数内に留めて
基本常にstd::付けた方がいいよ
764デフォルトの名無しさん:2013/10/26(土) 14:48:38.94
>>762
Javaの真似しただけだろ
765デフォルトの名無しさん:2013/10/26(土) 15:55:59.67
Range for は使ってみると速度が遅いな
Javaと同じ書式を採用したようだけど内部の展開が悪いみたい
ちなみにgcc
766デフォルトの名無しさん:2013/10/26(土) 16:15:45.24
>>765はRange-based forを一体何だと思ってるんだろうか
767デフォルトの名無しさん:2013/10/26(土) 16:19:37.45
今どきだと配列使わないでlistとかvectoreとか使うの?
768デフォルトの名無しさん:2013/10/26(土) 16:28:19.38
その遅いというコードを晒したらよってたかってダメなところ指摘してくれると思うよ
769デフォルトの名無しさん:2013/10/26(土) 16:41:46.40
>>767
ケースバイケース
770デフォルトの名無しさん:2013/10/26(土) 17:04:25.60
>>769
配列のほうが勝ってるケースってある?
アクセスとか挿入とかのコストとかの観点以外で
771デフォルトの名無しさん:2013/10/26(土) 17:12:39.99
>>770
アクセスとかのコストで配列のほうが勝ってるケースがあるって自分で分ってるじゃないか。
772デフォルトの名無しさん:2013/10/26(土) 17:21:52.50
測ってみると生配列のポインタよりイテレータの方が大抵早くなるわ
773デフォルトの名無しさん:2013/10/26(土) 17:24:21.45
>>770
速度が重要なケースでは例えば自動変数の配列で良い所でvectorを使ったりしないなあ
今どき他の言語じゃなくC++を使う理由は「速度」にあると思ってるよ
774デフォルトの名無しさん:2013/10/26(土) 17:25:25.70
>>772
そんな馬鹿な
775デフォルトの名無しさん:2013/10/26(土) 18:10:10.42
forの内側でvectorやstringを宣言する気にはなれませぬ
776デフォルトの名無しさん:2013/10/26(土) 18:16:54.61
>>774
測れよ
777デフォルトの名無しさん:2013/10/26(土) 18:25:23.81
なんでイテレータの方が速くなるの?
778デフォルトの名無しさん:2013/10/26(土) 18:29:21.67
さあ?コンパイラに聞いてくれ
779デフォルトの名無しさん:2013/10/26(土) 18:31:03.94
>>771
>>773
いや速度やメモリ使用量以外でもなんかメリットあるのかなぁと思って
今はそんな速度にこだわってないから,なんでもかんでもlistを使ってるんだけど
他の人はどうなのか気になってた
できればC++は難しいから使いたくないんだけど,業務だからしょうがないんだよなー
780デフォルトの名無しさん:2013/10/26(土) 19:34:04.19
>>776
どんなコードで比較したのかを書けよ
特にお前の言う「生配列のポインタ」ってのがどんなのか

イテレータが生ポより早いなんてありえないからw
781デフォルトの名無しさん:2013/10/26(土) 19:38:42.98
たまたまエイリアスの可能性が排除できて最適化されたのを
イテレータのおかげと勘違いしたとかじゃない?
782デフォルトの名無しさん:2013/10/26(土) 20:01:54.65
restrict
783デフォルトの名無しさん:2013/10/26(土) 20:24:49.20
生配列ってのが何らかのAPIで確保したメモリ領域の事で、
そのAPIのコストが高かったとかいう可能性もあるな。
784デフォルトの名無しさん:2013/10/26(土) 20:28:42.10
それかキャッシュの影響を考慮しないで測定値を鵜呑みにしてるとかだろ
イテレータなんて良くて生ポそのものなのであって。。。
785デフォルトの名無しさん:2013/10/26(土) 20:47:29.69
786デフォルトの名無しさん:2013/10/26(土) 20:56:27.44
> memset(a, 0, sizeof a);
これは笑いどころか?

とりあえず配列のほうは0クリアされてない(=キャッシュにのってない)ので
比較できる条件ではない
787デフォルトの名無しさん:2013/10/26(土) 21:00:01.41
わろたwwwww
788デフォルトの名無しさん:2013/10/26(土) 21:01:55.09
> auto e = &a[SIZE];
これは
auto e = &a[SIZE - 1];
こうだな

おれの環境では最適化したら似たり寄ったりだった
789デフォルトの名無しさん:2013/10/26(土) 21:03:31.53
>>788
それは&a[SIZE]でいい
しかしイテレータを<で比較する人はまだ絶滅してなかったか
790デフォルトの名無しさん:2013/10/26(土) 21:20:51.92
>>785
10年前のC++コードみたいだw
791デフォルトの名無しさん:2013/10/26(土) 21:22:31.34
>>786
あっ本当だ。いろいろいじってるうちに間違えちゃった。
修正版
http://ideone.com/VQdY0v
792デフォルトの名無しさん:2013/10/26(土) 21:25:23.78
>>790
まあそう言いなさんな
あくまでも生ポとイテレータの速度比較が目的なんだから
793デフォルトの名無しさん:2013/10/26(土) 21:31:22.06
>>790
今どきのってどんな感じなの?
いや,煽りとかじゃなく
794デフォルトの名無しさん:2013/10/26(土) 21:32:56.21
僕も昔の文献で学んだので気になります
795デフォルトの名無しさん:2013/10/26(土) 21:41:57.39
>>793
memsetとか、後置インクリメントとかあったからさ。
ちょっと思った事をそのまま書き込んでしまったんだ。すまん。
796デフォルトの名無しさん:2013/10/26(土) 21:50:08.86
俺が前回読んだときは生配列とvectorの速度比較の話だったはずなのに
今見たらポインタとイテレータの速度比較の話にすりかわってら
797デフォルトの名無しさん:2013/10/26(土) 21:54:07.19
すり替わってるってほどすり替わてるかそれ?
798デフォルトの名無しさん:2013/10/26(土) 21:57:47.19
今どきのCって++aが基本なの?
799デフォルトの名無しさん:2013/10/26(土) 21:57:52.14
>>791
そのコードでvectorと配列に有意っぽい差がついてるのが興味深いな
コンパイル環境教えてほしい。逆アセしてみたい
800デフォルトの名無しさん:2013/10/26(土) 21:58:02.06
生配列とvectorのどちらが早いかという話だから
一方にイテレータ使うと比較対象が曖昧だわな

生配列と生ポ
vectorと生ポ

これらで比較すりゃいい
801デフォルトの名無しさん:2013/10/26(土) 21:58:44.12
>>795
いや,純粋に気になっただけなんだ
さんくす
802デフォルトの名無しさん:2013/10/26(土) 22:01:29.94
>>798
後置インクリメントはコピー生成と同じ。
803デフォルトの名無しさん:2013/10/26(土) 22:08:53.37
>>802
それって型依存だよね?
804デフォルトの名無しさん:2013/10/26(土) 22:09:49.00
とりあえずideoneじゃ最適化オプションが問題だな
805デフォルトの名無しさん:2013/10/26(土) 22:10:41.16
>>803
プリミティブ型じゃどっちでも って感じだね
806デフォルトの名無しさん:2013/10/26(土) 22:19:24.80
++itの方が早い・・・はずだが、ideoneだと差出ないな
俺の環境だと差出たけど
っつうか、同じコードなのにvectorが配列より4倍くらい遅い
807デフォルトの名無しさん:2013/10/26(土) 22:24:41.26
>>803
型関係なくコピーはされる。
じゃないと部分式が評価される時点で変更が加えられちゃう。
/ideone.com/WaZZ5x

コストの大小で言えば、もちろん型によるだろうけど。
808デフォルトの名無しさん:2013/10/26(土) 22:28:49.56
>>807
値型はCと同じ実装じゃないのけ
809デフォルトの名無しさん:2013/10/26(土) 22:38:23.45
>>806
コンパイルオプションにちゃんと-O2付けてる?
810デフォルトの名無しさん:2013/10/26(土) 22:41:00.02
>>808
すまん、プリミティブ型の話か。
実際に比べた事はないが、まず変わらないだろうな。
811デフォルトの名無しさん:2013/10/26(土) 22:45:41.09
>>807
うそこけ型は関係あるだろ
プリミティブ型のi(int)を++i;した場合もi++;した場合も最適化されて↓になったぞ

movl %ebx, 4(%esp)
addl $1, %ebx
812デフォルトの名無しさん:2013/10/26(土) 22:46:08.38
>>809
O0だった
O2つけたら確かにほとんど変わらない
813デフォルトの名無しさん:2013/10/26(土) 22:47:18.09
>>811
すまない誤解を与える文章だった。
変わらないというのは速度の話だ。
814デフォルトの名無しさん:2013/10/26(土) 22:48:02.68
ideoneはgcc 4.8.1
最適化はたぶんデフォルトの-O2だな
815デフォルトの名無しさん:2013/10/26(土) 22:51:32.93
>>807
> 型関係なくコピーはされる。

変更前の値を使ってないなら、コピーを省略することぐらいは普通にやるでしょ。
816デフォルトの名無しさん:2013/10/26(土) 22:55:44.12
コンパイラはそうしてくれるかも知れんが、実装としてはコピーでしょ
817デフォルトの名無しさん:2013/10/26(土) 23:02:22.43
>>815
それはちょっと違くないか?
コンストラクタ通る時点で最適化止まるだろ。
818デフォルトの名無しさん:2013/10/26(土) 23:12:56.99
>>816
ごめん、マジで意味わからん

>>817
コンストラクタ?
ごめん、こっちも意味わからん...
819デフォルトの名無しさん:2013/10/26(土) 23:22:22.99
>>818
コピーコンストラクタで発生する副作用は最適化で消えないって意味だろ。
コピーコンストラクタで発生する副作用が全て最適化で消滅する場合は最適化の結果コピーも消えるだろうけど。
820デフォルトの名無しさん:2013/10/26(土) 23:36:01.32
>>818
最適化って関数呼び出しとか、一定の条件で止まっちゃうのよ。
もしかしてインラインなクラス前提で話してる?
821デフォルトの名無しさん:2013/10/26(土) 23:36:02.83
>>819
消えるのか、消えないのかはっきりしろよ...
822デフォルトの名無しさん:2013/10/26(土) 23:37:11.80
>>820
そもそもプリミティブの話だよ...
823デフォルトの名無しさん:2013/10/26(土) 23:37:18.30
>>815
これが一番意味分からん
824デフォルトの名無しさん:2013/10/26(土) 23:39:07.94
>>822
プリミティブ型ならそもそもコピー自体しない
省略って何だって、やっぱ意味不明
825デフォルトの名無しさん:2013/10/26(土) 23:52:35.55
もうごちゃごちゃするからレス書く前にプリミティブかクラスか両方か書こうず
826デフォルトの名無しさん:2013/10/27(日) 01:25:11.50
int countBit(int x) {
x = x - (( x >> 1 ) & 0x55555555);
x = (x & 0x33333333) + (( x >> 2) & 0x33333333);
x = ( x + ( x >> 4 )) & 0x0F0F0F0F;
x = x + ( x >> 8 );
x = x + ( x >> 16 );
return x & 0x0000003F; }

ネットで高速ビットカウントのソースを見つけました。64bitで使うために型と
0x3333333333333333
0x5555555555555555
0x0F0F0F0F0F0F0F0F
に変更したのですが32bitまでしか数えてくれません。
あとどこが修正必要でしょうか。
827デフォルトの名無しさん:2013/10/27(日) 01:26:01.81
ULつけるとか
828デフォルトの名無しさん:2013/10/27(日) 01:51:30.62
>>826
32bitシフトして足すのが足りないんじゃねえの?
829デフォルトの名無しさん:2013/10/27(日) 07:27:00.69
>>824
> プリミティブ型ならそもそもコピー自体しない

大丈夫か?
830デフォルトの名無しさん:2013/10/27(日) 08:44:10.31
>>826
827 828に加えて
returnのところの3fを7fにしないと何やっても31までしか返らんよ?
831デフォルトの名無しさん:2013/10/27(日) 09:26:41.92
>>830
わろた
832デフォルトの名無しさん:2013/10/27(日) 09:29:12.59
>>826
> x = x - (( x >> 1 ) & 0x55555555);

この、元の式がおかしい
833デフォルトの名無しさん:2013/10/27(日) 09:29:44.57
>>830
どうして?
834デフォルトの名無しさん:2013/10/27(日) 10:24:20.11
835デフォルトの名無しさん:2013/10/27(日) 11:00:01.86
>>822
途中で意見を変えたクズ
836デフォルトの名無しさん:2013/10/27(日) 11:12:47.84
>>834
おいおい、最適化の話との区別もできなくなってるのかよ...

>>835
途中で?
この話は >>795 が起点だと思うが、どこで変わったと思ったんだ?
837デフォルトの名無しさん:2013/10/27(日) 11:24:42.82
途中からしか話を追ってないやつかアスペかのどっちかだからキニスンナ
838デフォルトの名無しさん:2013/10/27(日) 12:41:37.44
>>836
>おいおい、最適化の話との区別もできなくなってるのかよ...
C言語からやり直せ
839デフォルトの名無しさん:2013/10/27(日) 13:16:15.38
>>838
> C言語からやり直せ

ますます、イミフ (w
840デフォルトの名無しさん:2013/10/27(日) 14:04:10.32
>>839
発想は察してやれ。
こういう考えの老害はよくいるだろ?
841デフォルトの名無しさん:2013/10/27(日) 14:08:12.46
>>840
ウザい消えろ
842デフォルトの名無しさん:2013/10/27(日) 14:21:47.76
839本人なのか便乗して安全なところから人を侮辱して相対的に自分が偉くなったような感覚に浸りたいのか
どちらにしても>>840みたいなクズは2ちゃんにはよくいる
843デフォルトの名無しさん:2013/10/27(日) 14:29:11.81
確かにそういう奴は2chによくいるね、ほらここにも→>>842
844デフォルトの名無しさん:2013/10/27(日) 14:43:37.65
プリミティブ型の++までクラスと同じだと信じて疑わないプログラマがいることの衝撃
オブジェクト指向だけやってきた弊害だろうか
845デフォルトの名無しさん:2013/10/27(日) 14:50:58.35
そもそもオーバーライドした前置インクリメントが実際に前置インクリメントであることはドキュメントかソース見ないとわからない
846デフォルトの名無しさん:2013/10/27(日) 15:17:26.77
>>844
javaでも違うわボケ
847デフォルトの名無しさん:2013/10/27(日) 15:57:59.37
for文やwhile文などでくりかえし処理をすると,繰り返しの回数が99回目までは問題ないのですが
必ず100回目で「sqrt domain error」が必ず出ます。
数値を色々変えてみても必ず起きます.
sqrt domain errorはルートの中身が負のときでるエラーだと思うのですが
それ以外に出る原因はありますか?
848デフォルトの名無しさん:2013/10/27(日) 15:58:44.38
>>847
ソース晒して
849デフォルトの名無しさん:2013/10/27(日) 16:25:06.84
>>844
そんな事言ってる奴はいない
850デフォルトの名無しさん:2013/10/27(日) 16:59:13.05
プリミティブ型の後置インクリメントでコピー発生とか言ってる人いるじゃんか
851デフォルトの名無しさん:2013/10/27(日) 17:03:13.56
>>847
お前のプログラムが間違えている。これ以外の原因はない
852デフォルトの名無しさん:2013/10/27(日) 17:22:19.61
853デフォルトの名無しさん:2013/10/27(日) 17:54:21.77
>>851
コンパイラが翻訳時に間違えている可能性もあんじゃん
854デフォルトの名無しさん:2013/10/27(日) 18:02:55.94
いつもすぐにコンパイラを疑うアホプログラマがいたが、
そいつのバグで実際にコンパイラがバグってたことは一度もない。
855デフォルトの名無しさん:2013/10/27(日) 18:17:52.15
だからなんだよアホ
856デフォルトの名無しさん:2013/10/27(日) 18:28:09.33
sqrtを呼ぶ前にassertで値をチェックしてデバッグビルドで実行してみたら?

assert(value >= 0);
sqrt(value);
857デフォルトの名無しさん:2013/10/27(日) 18:32:52.33
>>847
入力値が非数または数値として不正なビットパターンの場合
858デフォルトの名無しさん:2013/10/27(日) 19:58:06.34
>>854
たしかに、結構長い間マやってるけど、コンパイラのバグにぶち当たったのは X68K の gcc だけだな。
859デフォルトの名無しさん:2013/10/27(日) 20:03:28.36
お前らc++の知識どこで手に入れてんの?
860デフォルトの名無しさん:2013/10/27(日) 20:09:25.87
何に限らずこういう奴いるよな
「あいつは何か良い知識の仕入先を持ってるに違いない」と思う奴
今までに10回位はそういう事聞かれたわ
861デフォルトの名無しさん:2013/10/27(日) 20:17:34.95
俺知識の仕入先よく聞かれるわ―
10回くらいそういうこと聞かれたわ―
862デフォルトの名無しさん:2013/10/27(日) 20:19:38.10
>>859
hoge サイト
863デフォルトの名無しさん:2013/10/27(日) 20:20:25.75
そんなだからお前は何も出来ないんだよ
864デフォルトの名無しさん:2013/10/27(日) 20:21:23.03
そういうときは、2chって答えることにしている
865デフォルトの名無しさん:2013/10/27(日) 20:28:58.94
>>832
そういやそうだな・・・5=0b0101、3=0b0011・・・ってコレはコレでOKじゃん。引っかかるとこだった。
2bitだけ見るとちゃんとカウント出来てる。
00なら00-00=00、01なら01-00=01
10なら10-01=01、11なら11-01=10
866デフォルトの名無しさん:2013/10/27(日) 20:33:50.61
でもC++の知識って他の言語と比べて手に入れにくいだろ
867デフォルトの名無しさん:2013/10/27(日) 21:15:52.41
C++は文法、ライブラリ、コンパイラ、ターゲット環境、目的などが多岐に渡ってるから
ググるにしても調べたいことが明確じゃないと混乱するってのはあるかもね
まあ20年近くC++やってても正直全容がわからんし、自分のペースで学べばいいんじゃない
868デフォルトの名無しさん:2013/10/27(日) 21:56:06.37
何とかC++って外人の書いた本読んでくと何となく分かったような気になるよ
869デフォルトの名無しさん:2013/10/27(日) 21:59:06.73
EffectiveC++のこと?
870デフォルトの名無しさん:2013/10/27(日) 21:59:55.93
読んでない人いるの?
871デフォルトの名無しさん:2013/10/27(日) 21:59:57.69
むしろこのスレの住人は
ProgrammingLanguageC++とか読んでるんだろうか
872デフォルトの名無しさん:2013/10/27(日) 22:28:54.95
Exceptional C++とか
873デフォルトの名無しさん:2013/10/27(日) 22:32:13.16
EffectiveC++も読んでいるか怪しい
i++でもめるぐらいだし
874デフォルトの名無しさん:2013/10/27(日) 22:42:22.49
effective c++は変な癖つくから読むなって教授に言われた
875デフォルトの名無しさん:2013/10/27(日) 22:44:22.28
C++の本って高いからhogeサイトしか読んでない
876デフォルトの名無しさん:2013/10/27(日) 23:09:44.32
>>874
教授にいわれても
877デフォルトの名無しさん:2013/10/27(日) 23:09:57.43
投資限度額がそんなに少ないと何も成果物ができないだろ
878デフォルトの名無しさん:2013/10/27(日) 23:24:15.81
exceptionalは真面目に読め
effectiveは漫談として読め、もしくは読むな
879デフォルトの名無しさん:2013/10/27(日) 23:24:30.02
>>871
あまりに誤植、誤訳が多い糞本だったので、
ブックオフに売りにいったら0円って言われたから、重いのでそのまま引き取ってもらった。
880デフォルトの名無しさん:2013/10/27(日) 23:27:57.36
原著で読まないと
881デフォルトの名無しさん:2013/10/27(日) 23:56:33.38
教授は引きこもってコード書いてるだけだから変なコードだよ
で教授が読めないまともなコードは全部変な癖って片付ける
882デフォルトの名無しさん:2013/10/28(月) 00:05:14.55
Effective C++ってみんな読んでるっぽいから、変な癖だろうがそれが主流になっちゃしょうがないね
どこが変かはよく分からんが
883デフォルトの名無しさん:2013/10/28(月) 00:06:33.53
どっかのスレのまね
教育的 != 実用的

必ずしもそうとは限らない
884デフォルトの名無しさん:2013/10/28(月) 01:42:17.29
>>882
主流なわけねーよ。
-Weffc++ を日常的に使ってる奴は少数派だ。
常に付けるべしなんて言う奴はそこからさらに少数派だ。
885デフォルトの名無しさん:2013/10/28(月) 01:46:53.28
effective c++は
頻繁に例外安全ではないコードがサンプルに出てきて
そしてこれで正しいんだとのドヤ顔

プロジェクトにそんな馬鹿が居たら速攻で首になるレベル
886デフォルトの名無しさん:2013/10/28(月) 01:49:52.29
結局どれを読めばいいの?
887デフォルトの名無しさん:2013/10/28(月) 01:51:47.29
そのサンプルが例外安全性にフォーカスしてないだけなんじゃないの?
888デフォルトの名無しさん:2013/10/28(月) 01:55:38.63
effective c++のクソなところ。
データメンバーをpublicにするなという話。
std::pairのような設計は完全にNGだと主張されている。まるで子供。ほんと馬鹿。
徹底したカプセル化主義者かと思いきや、データメンバーを外から丸見えにするアクセサーをひたすら肯定してる。
まず内部のデータ構造ありきで、インターフェイスは後から内部に依存するように設計されてるじゃないか。馬鹿かこの馬鹿。
この馬鹿に洗脳されたら生涯駄目人間だからな。気を付けろ。
889デフォルトの名無しさん:2013/10/28(月) 02:09:43.37
逆にいい書き方書いてある本教えてくれよ
890デフォルトの名無しさん:2013/10/28(月) 02:14:07.00
>>887
operator=の正しい書き方はこうだ
の例でもやらかしてるから救いようがない
891デフォルトの名無しさん:2013/10/28(月) 02:46:49.70
四六時中例外安全を気にしてコードを書く不毛さよ
これはべつにC++に限らんけどね
892デフォルトの名無しさん:2013/10/28(月) 02:52:56.14
つまり exceptional C++ 嫁 ってことでいいのかな
893デフォルトの名無しさん:2013/10/28(月) 07:03:21.99
両方読めタコ
894デフォルトの名無しさん:2013/10/28(月) 09:31:48.94
895デフォルトの名無しさん:2013/10/28(月) 09:53:05.34
中学生の読書感想文みたいに子供っぽい文章だな
896デフォルトの名無しさん:2013/10/28(月) 10:04:02.41
>>891
上手にコツを掴むと気にしなくても例外安全になれるから気にしなくていいぞ
897デフォルトの名無しさん:2013/10/28(月) 11:10:46.92
>>888
>徹底したカプセル化主義者かと思いきや、データメンバーを外から丸見えにするアクセサーをひたすら肯定してる。
変更を考慮すりゃそうするのが当たり前だろ
898デフォルトの名無しさん:2013/10/28(月) 11:53:47.98
>>897
こういう駄目人間ができるから、effectiveは話半分で読むのがいいんだな
899デフォルトの名無しさん:2013/10/28(月) 12:12:20.74
全部のメンバーについて片っ端にアクセサー書いてpublicで見せる奴は消えてくれ
900デフォルトの名無しさん:2013/10/28(月) 12:38:26.03
全部そうしろなんて言ってないだろ文盲
901デフォルトの名無しさん:2013/10/28(月) 13:09:47.70
>>900
その文盲に消えてくれって言ってるんだろ>>899は。
902デフォルトの名無しさん:2013/10/28(月) 13:10:11.26
effectiveもexceptionalも具体的な技術・仕様そのものではなくそれを通してその裏にある哲学・思想を教えるための本でしょう
その段階から理解できずに即物的なテクニック・コード例としてしか読めない人には害があるでしょうね
903デフォルトの名無しさん:2013/10/28(月) 13:18:08.35
最初にそのまま公開してしまうと、
継承したクラスがデータメンバの設置や読み出しで、
何か処理をはさみたいと思っても、できなくなる。

こんなの、Effective C++以前の問題。
904デフォルトの名無しさん:2013/10/28(月) 13:48:24.89
namespace LogDispatch {
class File : public Base {
ofstream stream_;

というクラスに

ofstream const& stream() const { return stream_; }

というメソッドを足す奴はeffective c++の洗脳を受けてる
905デフォルトの名無しさん:2013/10/28(月) 14:26:06.44
プライベートメンバも必ず公開せよって、
どの章に書いてあるの?
906デフォルトの名無しさん:2013/10/28(月) 14:55:26.15
>>904
const付けろって言ってる章は、
アクセス制限がより強いメンバを返す時は、
変更可能にして返すなっていう、凄く当たり前な話してるだけで、
なんでもpublicで公開しろなんて書いてないよ。
907デフォルトの名無しさん:2013/10/28(月) 15:03:05.12
>>906
なのに、机の上にeffc++置いてる奴はアクセサーを増やすんだよな
七不思議の一つだ
908デフォルトの名無しさん:2013/10/28(月) 15:10:20.58
なんだ想像で語ってたのか。
909デフォルトの名無しさん:2013/10/28(月) 15:26:39.33
初心者が読むと必ずアクセサまみれのクラスばかり書くようになるのは
サブリミナル効果
910デフォルトの名無しさん:2013/10/28(月) 15:40:09.94
あの悪書は小手先の手口を癖にさせようとするから
あれに染まると思考停止して安直にパターンにはめ込みたがる癖までつくんだよ
まるでゾンビプログラマー
911デフォルトの名無しさん:2013/10/28(月) 15:41:22.91
ならねーよ。どんな曲解してんだ
912デフォルトの名無しさん:2013/10/28(月) 15:52:45.12
ネット上の情報を吟味せずに垂れ流してる馬鹿なんだろう
913デフォルトの名無しさん:2013/10/28(月) 16:00:36.07
やたらアクセサ書きたがる馬鹿は何に洗脳受けてんだよ
一つはeffective C++だと分かったが他に無い?
あと、アクセサを増やしてはいけないことを説明してる本はないか?
914デフォルトの名無しさん:2013/10/28(月) 16:23:20.47
とにかくEffective C++を貶したいんだなw
自分が理解できないからって適当言っちゃ駄目だぞ
915デフォルトの名無しさん:2013/10/28(月) 16:25:00.58
なに熱く主張してんのかとおもたら
ゲッタセッタ教の譚か
916デフォルトの名無しさん:2013/10/28(月) 16:36:14.44
ゲッタセッタ教の発祥はEffective C++だっけ?
917デフォルトの名無しさん:2013/10/28(月) 16:58:24.93
俺の経験だとゲッタセッタ教の発祥はJava使ってるITプログラマ
ずいぶん前だけど「アホ!これがオブジェクト指向というものだ!」
とか宣うプロマネの下で仕事したことある
918デフォルトの名無しさん:2013/10/28(月) 17:39:08.67
発祥はいつなの?
919デフォルトの名無しさん:2013/10/28(月) 17:44:53.32
初版の日本語版は20年前に出てる
Java普及より古い
920デフォルトの名無しさん:2013/10/28(月) 17:52:14.27
effective C++はC++を使い始めたばかりの20年前に読んで衝撃を受けた。
賛同できないルールも多々あったけど、名著だったと思うよ。
しかし古くなり過ぎた。

C++で仕事をする人は読んでおいて損はないと思う。
これが絶対のルールだとは思わず、こう考える人もいるのだくらいの気持ちで読めば、
結構いいヒントをたくさんもらえるんじゃないかな。

あと例外絡みのバグのほとんどはRAIIで駆逐できる。
921デフォルトの名無しさん:2013/10/28(月) 17:59:58.68
Effective C++教とゲッタセッタ教との相関がどの程度あるかという問題に帰結するんだろ?

Q1 Effective C++を信用してはならない書だと思うか?
Q2 ゲッタセッタは極力減らすべきか?

この相関が分かれば一発で解ける問題だな
922デフォルトの名無しさん:2013/10/28(月) 18:01:02.11
相関あっても因果は逆かも試練
923デフォルトの名無しさん:2013/10/28(月) 18:05:54.23
boolのゲッタにisつけろってゆー半ば法律化したルールはどこ発祥なんだろ
be動詞で表現しづらいとき思いっきり無駄な考慮時間つかうんだけど
924デフォルトの名無しさん:2013/10/28(月) 18:30:31.33
Effective C++のダメな項目を具体的に挙げてくれ
925デフォルトの名無しさん:2013/10/28(月) 18:32:36.72
>>924
この考え方が信者っぽいww
926デフォルトの名無しさん:2013/10/28(月) 18:44:26.90
そしてこの考え方が馬鹿っぽい
927デフォルトの名無しさん:2013/10/28(月) 19:19:09.96
>>913
Java/C#
928デフォルトの名無しさん:2013/10/28(月) 19:33:08.71
>>925
考え方じゃなくて、本当に唾棄すべき項目の質問だっての
番号付いてるから分かりやすいでしょ
929デフォルトの名無しさん:2013/10/28(月) 19:56:57.66
>>928
各論から先に行くのはEffective C++の影響?
930デフォルトの名無しさん:2013/10/28(月) 20:07:06.46
なにいってんの
931デフォルトの名無しさん:2013/10/28(月) 20:41:01.43
結局具体的にはなしか
はあ・・・
932デフォルトの名無しさん:2013/10/28(月) 20:51:10.79
>>931
つまり最初から無いことを願ってた?
933デフォルトの名無しさん:2013/10/28(月) 20:53:35.00
>>924
そういう話をしたいなら、お前が率先して列挙の作業やれば?
そんなお前とそんな話をしたい奴がどれだけ居るか知らんけど
934デフォルトの名無しさん:2013/10/28(月) 20:57:45.47
ごめんなしゃい
具体例は無いけど適当に批判してみただけです
935デフォルトの名無しさん:2013/10/28(月) 20:57:46.99
で結局どこがダメなの?
936デフォルトの名無しさん:2013/10/28(月) 21:07:28.49
>>929
>>932
>>933
これがhoge厨です
彼らはhoge本しか読んだことがないので知ったかぶりしかできません
ご理解されたし
937デフォルトの名無しさん:2013/10/28(月) 21:19:30.86
まあ権威を批判する俺カッコイーってとこかね
938デフォルトの名無しさん:2013/10/28(月) 21:33:19.29
>>934
既に色々出されてるのでは?
939デフォルトの名無しさん:2013/10/28(月) 21:34:31.93
>>931
それって、見えないフリの芝居なの?
それとも本当に見えなくなるの?
940デフォルトの名無しさん:2013/10/28(月) 21:38:38.29
かわいそうに
941デフォルトの名無しさん:2013/10/28(月) 21:41:26.51
ゲッタセッタ少なくするってどうすんの?
なるべく関数値で返すようにしろってこと?
942デフォルトの名無しさん:2013/10/28(月) 21:43:06.81
ゲッタセッタ教ってなんですか?
ググっても説明が見つかりませんでした
943デフォルトの名無しさん:2013/10/28(月) 21:43:12.67
構造体でやり取りする
944デフォルトの名無しさん:2013/10/28(月) 21:59:12.21
アクセサミューテータばっかになるのは設計が悪いだけでEffective C++のせいじゃない
945デフォルトの名無しさん:2013/10/28(月) 22:04:01.32
Effective C++信者が書くとアクセサばっかになるのはガチだけどな
946デフォルトの名無しさん:2013/10/28(月) 22:04:51.47
ゲタ、セッタじゃなかったっけ。
よく知らんけど。
947デフォルトの名無しさん:2013/10/28(月) 22:06:24.90
ああ、アクセサじゃなくてパブリック変数で返してほしいのか
C++なんか捨てて、C#やれよ
948デフォルトの名無しさん:2013/10/28(月) 22:09:00.96
C#高くて買えない。
949デフォルトの名無しさん:2013/10/28(月) 22:10:44.04
>>945
一体なにがそう思い込ませてるのか、逆に気になる。
950デフォルトの名無しさん:2013/10/28(月) 22:18:43.81
>>948
Expressでいいがな
951デフォルトの名無しさん:2013/10/28(月) 22:20:14.33
結局、コード書くのが面倒になってpublicにするようになるよ。
952デフォルトの名無しさん:2013/10/28(月) 22:22:23.32
嫌Effective厨きめえw
953デフォルトの名無しさん:2013/10/28(月) 22:26:36.74
アクセサばっか書いてる奴はJavaから来た奴じゃねえのか
っつうか、Effective C++以外でもアクセサよりパブリック変数を積極的に使ってる本なんかあるのか?
954デフォルトの名無しさん:2013/10/28(月) 22:33:46.38
>>953
> っつうか、Effective C++以外でもアクセサよりパブリック変数を積極的に使ってる本なんかあるのか?

誰もそんな対比してないのに、なにいってんだこいつ
955デフォルトの名無しさん:2013/10/28(月) 22:37:51.64
アクセサかさもなくばパブリックか

典型的なゲッタセッタ病の重症患者
たぶん直らないので真面目に相手しない方がいい
956デフォルトの名無しさん:2013/10/28(月) 22:39:33.17
プロパティ型があれば・・・
957デフォルトの名無しさん:2013/10/28(月) 22:41:13.21
>>955
ちょっとバカは黙ってて
958デフォルトの名無しさん:2013/10/28(月) 22:42:58.45
>>953
釣り下手だな
959デフォルトの名無しさん:2013/10/28(月) 22:43:20.29
馬鹿にバカっていうとメチャメチャ怒るから言わないほうがいいよ。
怒らなかったらバカじゃないよ。
960デフォルトの名無しさん:2013/10/28(月) 22:47:06.02
ゲッタセッタ病は治らんね
更正を頑張っても五人に一人か二人くらい
961デフォルトの名無しさん:2013/10/28(月) 22:52:24.46
重症になるとメンバ変数の宣言からゲッタセッタ定義までマクロ化するからなww
962デフォルトの名無しさん:2013/10/28(月) 23:02:32.45
マクロとかないわー
もう完治不可能だろ
963デフォルトの名無しさん:2013/10/28(月) 23:05:33.80
マクロで関数定義できるの?
964デフォルトの名無しさん:2013/10/28(月) 23:27:23.63
機能的にカプセル化すべきクラスをまともに設計出来ないでアクセサだらけにして
カプセル化してるつもりの奴ね
データ主体のクラスならアクセサだらけでもpublicメンバ変数だらけでも良いんだが
965デフォルトの名無しさん:2013/10/28(月) 23:30:14.75
ゲッタセッタvsぱぶりくめんばー
ってスレ建てたら意外と面白いことになるかもしれない
966デフォルトの名無しさん:2013/10/28(月) 23:30:31.96
ゲッタセッタ病は治らなかったらいつかはマクロに行き着くよ
時間の問題
967デフォルトの名無しさん:2013/10/28(月) 23:32:41.96
>>965
そもそもパブリックメンバー派は居ないから
968デフォルトの名無しさん:2013/10/28(月) 23:36:36.06
class BaseballTeam {
DEFINE_PROPERTY(std::vector<Player>, member);


ゲッタセッタ重症者の典型例
969デフォルトの名無しさん:2013/10/29(火) 00:26:20.99
こいつどんだけ心に傷おってんの
ゲッタセッタやるやつに苛められてたのかな
ざまあw
970デフォルトの名無しさん:2013/10/29(火) 00:43:39.76
メンバ変数の存在に基づいてクラスインターフェースを考えてるのがダメ。
971デフォルトの名無しさん:2013/10/29(火) 01:28:03.52
アクセサの作りすぎが原因で破綻したプロジェクトもあるしな
972デフォルトの名無しさん:2013/10/29(火) 01:29:53.66
どれ?
973デフォルトの名無しさん:2013/10/29(火) 01:30:08.28
どうせお前のせいだろ
974デフォルトの名無しさん:2013/10/29(火) 01:37:38.08
>>963
#define defvar(type,name) private:type m##name;public:void set##name(type new##name){m##name=new##name;}public:type& get##name(void){return m##name;}

うわぁ・・・・・・・・・・・
975デフォルトの名無しさん:2013/10/29(火) 02:04:48.85
>>974
さすがにこんなこと始めるまで悪化したら
問題点が多すぎて直る気配がしない
976デフォルトの名無しさん:2013/10/29(火) 02:21:36.65
自分が今書いてるコード見なおしてみたが、アクセサ多いなあ。
まあ、条件分岐やら上限チェックやら入れてるから仕方ないんだけども。
977デフォルトの名無しさん:2013/10/29(火) 02:38:37.04
アクセサがやたら多くなるのは、クラスが不必要に多くの役割を与えられてる場合が多い
粒度を見直してみたらどうか?ってじっちゃが言ってた。
あとC++のクラスはJavaみたいに手なりでは書けないものだから、クラス設計してテスト
書いてからコーディングするクセをつけないと後々苦労するってばっちゃが言ってた。
978デフォルトの名無しさん:2013/10/29(火) 02:42:06.32
役割を限定するとどんどんクラスが増えてまた管理できなくなるという。
979デフォルトの名無しさん:2013/10/29(火) 02:50:24.39
え?
クラス減らしたがる人と
アクセサ増やしたがる人は
共通してんの?
980デフォルトの名無しさん:2013/10/29(火) 03:05:35.31
>>979
必要性ガン無視でアクセサ増やすって行為は、
クラス減らした結果アクセサが増えた場合も、
そうでない場合も、どちらでも実行可能じゃない?
981デフォルトの名無しさん:2013/10/29(火) 03:06:13.29
クラスを減らしたがる人(個々のクラスを肥大化させたがる人)の設計は、
クラス間の依存関係がカオスになりがち。
依存関係を図にプロットするツールに通すと、循環であちこちに円ができてな。
依存ツリーを図にしてるはずなのに、
なぜかインターネットプロバイダの接続図みたいになるんだよ。
982デフォルトの名無しさん:2013/10/29(火) 03:09:52.07
ゲッタセッタ病も
クラス減らし病も
循環依存設計病も
全部が繋がりあってるんだよ
だからどれか一つ治そうとしても無理なんだよ
983デフォルトの名無しさん:2013/10/29(火) 03:17:05.34
事あるごとにクラスつくる人と
こまいクラス全部ご丁寧にファイル分ける人は嫌い
何の本に毒されたのやら
984デフォルトの名無しさん:2013/10/29(火) 04:56:30.58
だがその中間はどこかということだ。
極論同士で比較してもどっちもダメに決まってるだろ。

PGクラスとSEクラスを分けるか分けないかというレベルの話だ。
985デフォルトの名無しさん:2013/10/29(火) 05:37:40.38
SEはデザインインターフェースとコーディングインターフェースを持ち
PGはコーディングのみでおk
986デフォルトの名無しさん:2013/10/29(火) 09:05:11.95
987デフォルトの名無しさん:2013/10/29(火) 09:20:02.81
>>986
おつhoge
988デフォルトの名無しさん:2013/10/29(火) 10:29:07.98
ここまでCOMなし

COMやりだした頃は、ゲッタセッタになりかけた 嫌々だった
よく考えたら、場合によってはstruct* 返せばいいんだった
989デフォルトの名無しさん:2013/10/29(火) 10:50:37.66
下駄に雪駄
990デフォルトの名無しさん:2013/10/29(火) 18:23:41.00
COMは外に出すことが前提だし、ソース見えないし、しかし、
自前でしか使わないクラスにいちいちゲッタセッタは面倒だし、遅いし、無意味。
991デフォルトの名無しさん:2013/10/29(火) 18:37:31.88
インターフェースまでちゃんと考えてくれるSEがほしい
992デフォルトの名無しさん:2013/10/29(火) 21:10:43.67
>>986
おつ
993デフォルトの名無しさん:2013/10/29(火) 21:52:11.01
埋め
994デフォルトの名無しさん:2013/10/29(火) 22:01:13.27
C♭
995デフォルトの名無しさん:2013/10/29(火) 22:09:32.78
Cff
996デフォルトの名無しさん:2013/10/29(火) 22:14:41.81
Ctt
997デフォルトの名無しさん:2013/10/29(火) 22:49:29.93
コウメバアサン
998デフォルトの名無しさん:2013/10/29(火) 22:51:10.13
松竹梅はマツタケウメ
999デフォルトの名無しさん:2013/10/29(火) 22:55:07.43
1000ならclang gcc VCでC++14前倒し実装
1000デフォルトの名無しさん:2013/10/29(火) 22:55:29.91
ウメ ← これ何に見える?
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。