トップページ⇒tech
1001コメント245KB

C++相談室 part105

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

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

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

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

#include <stdafx.h>
後死ね。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

>>44
>家畜は殺しても生態系への影響がない。つまり食べていいのです。飼育して食べるのは人類の存続可能性という点でエコロジー
◎85点
0051デフォルトの名無しさん2013/09/30(月) 07:36:11.13
>>49←こいつきっしょ
0052デフォルトの名無しさん2013/09/30(月) 08:38:36.25
>>51
なんでキモい言われたか気付いてないんだろ?
だっせw
0053デフォルトの名無しさん2013/09/30(月) 09:07:38.30
>>50
家畜って育てるだけで環境負荷が結構あったよね。
温室効果ガスとしてのメタンは家畜の牛が結構な量を排出してたはず。
0054デフォルトの名無しさん2013/09/30(月) 10:32:37.70
温室効果ガス出しちゃいけないの?
必要なら別に出してもいいだろバーカ
0055デフォルトの名無しさん2013/09/30(月) 10:41:47.10
お前らいい加減にしとけ
ここはム板だ
プログラム以外の話をしたいのなら他の板に行け
0056デフォルトの名無しさん2013/09/30(月) 10:47:03.26
なんでキモい言われたか気付いてないんだろ?
だっせw
0057デフォルトの名無しさん2013/09/30(月) 11:19:51.35
hogeは伸びる
0058デフォルトの名無しさん2013/09/30(月) 11:32:23.30
class A{
A(void)
{}
}
と
class B{
B(void)
{}
}
の違いを教えてください
0059デフォルトの名無しさん2013/09/30(月) 11:33:20.19
ミスりました!
class A
{
A)
{
}
}
と
class B
{
B(void)
{
}
}
の違いです
0060デフォルトの名無しさん2013/09/30(月) 11:53:52.51
A()とB(void)の違いってことかな
何も違わない
0061デフォルトの名無しさん2013/09/30(月) 12:19:55.13
>>59
書き込むボタンを押す前に3回冷水をかぶれ
0062デフォルトの名無しさん2013/09/30(月) 17:12:50.85
引数なしのコンストラクタでクラスhogeをインスタンス化するとき、
hoge hoge_(); とすると関数宣言との区別がつかないためエラーになると思いますが、
コンパイラあるいはC++の規格によってはエラーにならない場合もあるのでしょうか?
0063デフォルトの名無しさん2013/09/30(月) 17:27:41.79
ねーよ
0064デフォルトの名無しさん2013/09/30(月) 17:54:48.21
>エラーになる

そんなコンパイラあるの?
0065デフォルトの名無しさん2013/09/30(月) 18:01:17.30
hoge非対応コンパイラならなるんじゃないのか
0066デフォルトの名無しさん2013/09/30(月) 18:30:43.40
あるクラスのfirendクラス中にネストクラス書いた場合、そのネストクラスもfriendでいいの?
VC++6だとコンパイル通らなかったけど・・・
http://ideone.com/p9KSV8
0067デフォルトの名無しさん2013/09/30(月) 19:12:06.39
>>60
ありがとうございます!
0068デフォルトの名無しさん2013/09/30(月) 20:14:51.16
>>66
自己解決、C++11ならOKなのね
0069デフォルトの名無しさん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 あたりで発生してました。現在はなぜだか直っている模様
0070デフォルトの名無しさん2013/09/30(月) 20:53:50.25
eclipseのデバッガなんてその程度よ
0071デフォルトの名無しさん2013/09/30(月) 20:55:49.73
VCで試してみたら
0072デフォルトの名無しさん2013/09/30(月) 21:00:51.46
>>69
コードは問題ないね
http://codepad.org/trifD8VE
0073デフォルトの名無しさん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 違反のこともあるので、うむむです。
0074デフォルトの名無しさん2013/09/30(月) 21:25:21.44
pthreadのスタックサイズが、小さすぎるとか
0075デフォルトの名無しさん2013/09/30(月) 22:51:16.28
>>74
調べた。
なるほどです。
POSIXではなく、Windowsアプリなんだけど、関係ないとも言い切れないですねぇ

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

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

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

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

この2つを見てからでないと信用出来ないw
0084622013/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) と出力
}
0085デフォルトの名無しさん2013/10/01(火) 02:40:08.27
で?それがお前の環境じゃエラーになるの?
0086622013/10/01(火) 03:14:41.22
すみません、間違えました!>>84のコードはコンパイルエラーにはなりません。
実は人からもらったソースコードをいじってて、引数なしのコンストラクタを hoge obj1();
などとインスタンス化するとよく分からないコンパイルエラーになり、調べてみた次第です。

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

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

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

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

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

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

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

>>138
多重継承が最適解な特定の問題領域でだけ、ちょっと困る
普段は気にもしない
0143デフォルトの名無しさん2013/10/03(木) 00:33:39.96
>>142
メモリリークはスマポ使えばいいじゃない
0144デフォルトの名無しさん2013/10/03(木) 02:42:10.65
C#が遅いのは.netのせい?それとも言語仕様的にしょうがないの?
0145デフォルトの名無しさん2013/10/03(木) 02:52:46.25
そういえばJavaがC++より遅いと書いたら「証拠を示せ」と発狂している奴がいたな
0146デフォルトの名無しさん2013/10/03(木) 03:32:41.00
ファンクタを受けとる関数はヘッダに公開しないといけないのですか? 公開しないで隠蔽する何かいい方法ありませんか?
0147デフォルトの名無しさん2013/10/03(木) 03:58:44.99
うーん、ファンクタじゃなく関数ポインタで受け取るしかないような
0148デフォルトの名無しさん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;
}
}
0149デフォルトの名無しさん2013/10/03(木) 08:30:07.19
>>146
std::function や boost::function を使う。
0150デフォルトの名無しさん2013/10/03(木) 09:29:23.67
>>149
質問主じゃないけど、できたわサンクス。勉強になった
http://ideone.com/o2Ltut
0151デフォルトの名無しさん2013/10/03(木) 09:34:41.90
>>148
目的がわからないから何とも言えんが、
WindowsならAPIで特定の種類の使用領域一覧を頂いてから、
狙い撃ちで検索するとか。

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

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

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

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

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

別スレのほうが適していれば誘導お願いします
0223デフォルトの名無しさん2013/10/08(火) 06:49:01.48
ミリセコンドはあるんじゃね
0224デフォルトの名無しさん2013/10/08(火) 07:00:38.72
こいつはsleep_forの引数がなんだとおもってるんだろう
0225デフォルトの名無しさん2013/10/08(火) 08:13:27.03
>>222
各APIの精度って時点で環境依存だしコンパイラでは把握できないだろ。
リアルタイム用途ならAPIリファレンス読んで自分で選べば良いかと。
0226デフォルトの名無しさん2013/10/08(火) 08:56:58.23
>>225
>コンパイラでは把握できない
why?
0227デフォルトの名無しさん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でした。どれが正しいですか
0228デフォルトの名無しさん2013/10/08(火) 09:34:16.30
エラー張れよ
0229デフォルトの名無しさん2013/10/08(火) 09:41:42.69
array bound is not an integer constant
0230デフォルトの名無しさん2013/10/08(火) 09:44:22.76
>>222
正規の情報源で聞けば
ttp://www.dh.aist.go.jp/jp/research/assist/ART-Linux/
ttp://sourceforge.net/projects/art-linux/
0231デフォルトの名無しさん2013/10/08(火) 09:44:45.51
>>227
なぜ配列の大きさを
hoge::foo
にしないの?
0232デフォルトの名無しさん2013/10/08(火) 09:47:16.89
>>231
しないからです
0233デフォルトの名無しさん2013/10/08(火) 12:04:36.46
if(hoge){
std::thread th(func);
}
等とすると折角建てたスレッドの変数が
スコープを抜けると共に死んでしまうので困っています

スレッドを建てるかどうかを選択するのが目的です
どうするのが正解なんでしょうか
02342332013/10/08(火) 12:22:45.29
ひとまず
std::thread th;
if(){
std::thread tmp(func);
th=std::move(tmp);
}
としていますが、もっとスマートな方法ないですかね
0235デフォルトの名無しさん2013/10/08(火) 12:30:35.21
std::async使えよ
0236デフォルトの名無しさん2013/10/08(火) 12:41:58.45
>>222
2chなら
ttp://engawa.2ch.net/test/read.cgi/linux/1270842134/
ttp://uni.2ch.net/robot/
0237デフォルトの名無しさん2013/10/08(火) 14:08:08.56
>>227

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

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

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

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

マジで根性腐ってるな
0260デフォルトの名無しさん2013/10/09(水) 01:44:04.92
おもちゃが喋った!
0261デフォルトの名無しさん2013/10/09(水) 01:49:01.61
ifの中でインスタンス確保以外しないなら
thread t(hoge ? thread(func) : thread());
とかでよかろ
0262デフォルトの名無しさん2013/10/09(水) 02:44:20.15
>>258
お前いい加減迷惑だよ。
0263デフォルトの名無しさん2013/10/09(水) 15:33:28.68
>>261
落書きは便所の壁にやってろキチガイ。
0264デフォルトの名無しさん2013/10/09(水) 17:45:44.21
>>258
おーい、ラムダが入ってねえぞ
0265デフォルトの名無しさん2013/10/09(水) 17:46:02.64
>>261
なんでヴァカが回答者気取ってるの?
お前の書き込みは価値がないんだから早く回線切れよ
0266片山博文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>のみです。
0267デフォルトの名無しさん2013/10/10(木) 01:38:53.32
>>266
スレをゴミで荒らさないでください
0268デフォルトの名無しさん2013/10/10(木) 03:12:49.40
>>267が>>266にアンカうってるけどあぼーんで見えない
CスレにいるキチガイっていったらQZかな
0269デフォルトの名無しさん2013/10/10(木) 06:22:06.48
>>268
Yes
0270デフォルトの名無しさん2013/10/10(木) 13:08:54.73
やっぱりQZはカスだな
0271デフォルトの名無しさん2013/10/10(木) 14:30:55.64
perlでいうところの

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

ということをしたい場合。
つまり、配列の中の各要素の特定のメンバーの中での最小値を求めたい場合。
C++だとどういうやり方がナウいんですか?
0272デフォルトの名無しさん2013/10/10(木) 14:35:16.83
int min = 0;
for (auto n : list)
min = std::min(min, n);
0273デフォルトの名無しさん2013/10/10(木) 14:38:28.96
0点
0274デフォルトの名無しさん2013/10/10(木) 14:39:12.90
>>272
listの要素は全て負数なの?
っていうかアルゴリズム系のにラムダ突っ込むとかそういうのは無いのか。
02752722013/10/10(木) 14:43:29.23
ああ0から始めたらダメだな
アホだったわすまん
0276デフォルトの名無しさん2013/10/10(木) 15:04:47.59
>>272
この手の問題は第一要素を初期値にしなければならない
0277デフォルトの名無しさん2013/10/10(木) 15:12:22.10
要素数ゼロにしてクラッシュさせる遊び
0278デフォルトの名無しさん2013/10/10(木) 15:35:55.35
Google→[std::min_element]
0279デフォルトの名無しさん2013/10/10(木) 16:16:46.04
minの部分はmin_elementでいけるけど
mapの部分はどうするんだろ
0280デフォルトの名無しさん2013/10/10(木) 16:41:05.63
やりたいことは特定のメンバの最小値を求めることでしょ
それならmin_elementにラムダを渡せばいいんじゃない?
もしそのメンバしか比較対象にならないなら、クラスに < 演算子を定義しておくとか
0281デフォルトの名無しさん2013/10/10(木) 16:49:39.01
>>280
いきなりmin_elementに渡したら、元の要素のコピーコンストラクターが動くぞ。
0282デフォルトの名無しさん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>のコピーコンストラクターが動く?
0283デフォルトの名無しさん2013/10/10(木) 17:02:44.01
>>281
何の事?もしかしてラムダの引数のこと?
それなら普通にconst参照にすれば良いよね
0284デフォルトの名無しさん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;
0285デフォルトの名無しさん2013/10/10(木) 18:31:34.29
hogeはC++の知識すらたいしてないのに最新のC++11を使うからな
0286デフォルトの名無しさん2013/10/10(木) 23:10:00.57
ラムダなしだと大掛かりになりそうだな
0287デフォルトの名無しさん2013/10/11(金) 18:32:34.84
ラムダなしで単純に書こうとしても無理だろ
0288デフォルトの名無しさん2013/10/11(金) 20:02:33.13
win32アプリケーションを使うことになったのですが、
文字列の扱いについて、
char std::string CString TCHAR PLCSTR PLCTSRT 等ありすぎて何が何だか分からなくなるのですが、
皆さんはどのように使い分けてるのですか?
また、通常使うのはどの型を使ってコードを書かれますか?
0289デフォルトの名無しさん2013/10/11(金) 20:06:55.93
WTL使ってるから普段はCString使ってる
LPCTSTRとかは単なるtypedefだからわからないってことはないだろ
0290デフォルトの名無しさん2013/10/11(金) 20:14:30.82
>>288
C++はstring
0291デフォルトの名無しさん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");
0292デフォルトの名無しさん2013/10/11(金) 20:17:42.30
stringが内部で勝手にメモリ確保しまくるんだけどどうやって制御すればいいhoge?
0293デフォルトの名無しさん2013/10/11(金) 20:18:23.48
reserveすればいいhoge
0294デフォルトの名無しさん2013/10/11(金) 20:22:27.58
>>292
制御って、なにをしたい?
0295デフォルトの名無しさん2013/10/11(金) 20:25:25.83
size見ろよhage
0296デフォルトの名無しさん2013/10/11(金) 21:35:15.00
hogeユーザーはキチガイなんので
構わないで下さい
0297デフォルトの名無しさん2013/10/11(金) 22:26:41.95
分かったhoge
0298デフォルトの名無しさん2013/10/11(金) 23:00:33.35
ポインタはsignedですか?unsignedですか?
0299デフォルトの名無しさん2013/10/11(金) 23:02:17.61
アドレスに符号付けてどうすんの?
0300デフォルトの名無しさん2013/10/11(金) 23:04:03.82
ポインターはポインターだ。
signedとか何イミフなこと言ってんの?
0301デフォルトの名無しさん2013/10/11(金) 23:14:21.97
>>300
出た
本物の馬鹿が
0302 ◆hogee.iIu3As 2013/10/11(金) 23:28:29.50
hogeユーザーはキチガイが多くて困ります。
0303デフォルトの名無しさん2013/10/11(金) 23:31:12.63
unsigned float
0304デフォルトの名無しさん2013/10/11(金) 23:31:21.79
hoge使いには基地外しかいない
ポンタはアドレスですよ、アドレス
0305デフォルトの名無しさん2013/10/11(金) 23:34:50.97
unsigned同士の減算の結果はunsignedになると定まっている。
ポインター同士の減算の結果はsignedである。
ゆえにポインターはsignedである。
0306デフォルトの名無しさん2013/10/11(金) 23:39:06.87
>>304
そのアドレスを意味する数値の型はsignedかunsignedかという話しだろ
0307デフォルトの名無しさん2013/10/11(金) 23:40:56.68
>>304
>ポンタはアドレス
脳内定義乙
0308デフォルトの名無しさん2013/10/11(金) 23:50:42.05
碁石の表はどっちかみたいな問題か
0309デフォルトの名無しさん2013/10/11(金) 23:59:01.51
三時半は深夜か早朝か
みたいなものか
0310デフォルトの名無しさん2013/10/12(土) 00:05:15.91
>>298 は、質問としてはまとも
>>300 からだよ、アフォ流れになったのは
0311デフォルトの名無しさん2013/10/12(土) 00:06:01.31
>>299 もデコーダ組めない手合いと踏んでいる
0312デフォルトの名無しさん2013/10/12(土) 00:26:13.66
ポンタ?
ローソンのカードか?
0313デフォルトの名無しさん2013/10/12(土) 00:47:25.86
intptr_t とかにしとけ
0314デフォルトの名無しさん2013/10/12(土) 00:54:41.15
配列で
a[0]をさすポンタ - a[10]をさすポンタ したらマイナスになるからな
0315デフォルトの名無しさん2013/10/12(土) 01:04:35.48
ローソンで毎回必ずポイントカードはお餅ですかと聞かれてじゃまくさいんだけど、
ポンタなんか持ってる奴いるのか?
あんなもの持ってどうするんだ?
0316デフォルトの名無しさん2013/10/12(土) 01:10:52.40
>>315
聞かれるよな。あれなんか特典あるのか
ローソンはアニメ関連のこと色々やっているからポンタ貯めてアニメ関連景品ゲット!とか
03177102013/10/12(土) 01:19:34.88
>>314
その結果って既にぽんたじゃねーし
0318デフォルトの名無しさん2013/10/12(土) 01:26:53.93
ポンタクラスの-演算はsigned intを返すからね
0319デフォルトの名無しさん2013/10/12(土) 01:38:04.89
>>308
そりゃ歩・飛・角が表で、と・龍・馬が裏だろう?
0320デフォルトの名無しさん2013/10/12(土) 01:47:49.76
>>315
ローソン系のパスポートアカウントだと思えば。
あれあったら、wifiつかえるんだろ?
ド近所にないからしらんのだが(ちょっといったらある)
0321デフォルトの名無しさん2013/10/12(土) 02:22:11.12
アドレスと言っていいのはvoidポンタだけだと思う
0322デフォルトの名無しさん2013/10/12(土) 02:42:22.34
>>314
ひいた結果が何かチップセレクトするのかよ?
0323デフォルトの名無しさん2013/10/12(土) 02:57:58.49
つーかコンビニって多少高いけど背に腹は代えられない便利さで使ってるからポイントカードとかウザいんだよ
ポイントカードはお持ちですか?じゃねーよ
1秒でも早く会計済ませろボンクラ

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

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

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

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


いいぞもっとやれww

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

って書こうと思ったけど

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

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

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

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

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

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

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

これはカスだな

勝手にexitしてるのもカス

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

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

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

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

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

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

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

質問ばかりでスマソ
0420デフォルトの名無しさん2013/10/14(月) 06:22:21.75
>>417 の指摘に対応するため、operator = はコピーコンストラクタとswapを組み合わせて実装すべし
04213832013/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
0422デフォルトの名無しさん2013/10/14(月) 07:23:53.54
> if (m_topnode == NULL)で何を返せばいいのかわかりませんでした
Popの戻りをvoidにするのはそういう理由じゃないぞ。

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

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

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

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

可変長引数を受け取ってからtupleに代入して引数の個数を取得するコードは動いたのですが、
コンパイル時に分からないn番目の要素をtupleから取得する方法が分かりませんでした。
0434デフォルトの名無しさん2013/10/14(月) 09:14:35.70
>>429
あと今の Stack<TYPE>::Swap の実装だと、
・失敗する可能性がある
・全く効率的でない
という欠陥がある。
>>427,431の指摘に対応するためにはここを直さないとダメ。
0435デフォルトの名無しさん2013/10/14(月) 09:14:54.51
>>424
初期化子を使えよ。
initなんか消せ。
copyメソッドなんか消せ。
あれを書いていいのはcopy-constructorだけだから、その中に直接書け。
0436デフォルトの名無しさん2013/10/14(月) 09:16:00.29
書き忘れたが
Swap ではなく、swap にしろ。
これは些細な問題ではない。
0437デフォルトの名無しさん2013/10/14(月) 09:17:38.39
>>424
メンバー関数は全部小文字な。
他のコンテナーと簡単にバトンタッチできるように。
0438デフォルトの名無しさん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);
}
0439デフォルトの名無しさん2013/10/14(月) 09:29:25.94
>>423
再帰で std::vector<boost::any> に詰め込めば、後からランダムアクセスできる。
ただし boost::any の type() で typeinfo を調べてから 型ごとに boost::any_cast<T> するあたりから泥臭くなる。
まあCの可変長引数と違って、実行時に型チェックができるだけマシっちゃマシかな
0440デフォルトの名無しさん2013/10/14(月) 09:57:10.43
>>439
ありがとうございます。
これなら目的は達成できそうです。
04414242013/10/14(月) 10:25:46.22
>>427,431,434,435,436,437,438
ありがとうございます!

Stack.h: http://codepad.org/A8uhjc75
実行結果: http://codepad.org/GpHZht3l
0442デフォルトの名無しさん2013/10/14(月) 10:42:37.24
>>440
型を消去せず、保持したまま掘り進めていくことも可能
http://ideone.com/3EcKXa
このソースの上の方にある構造体は、index_tupleイディオムを実装するためのもので、タプルを展開して扱う事が出来るようになるのでとても便利
0443デフォルトの名無しさん2013/10/14(月) 11:52:26.13
>>441
グローバルな swap関数を用意するのも忘れるなよ。
std::swap をオーバーライドするものとなる。
これがないとせっかく作ったメンバ関数としてのswapの価値が半減する。
0444デフォルトの名無しさん2013/10/14(月) 17:38:31.15
>>442
ありがとうございます。
でもコレはどう考えても効率良くないですし、
タプルの一部を参照した後の処理(この例だとcoutへの出力)が探索部分の内側に隠れてしまっていて使いづらいですね。
0445デフォルトの名無しさん2013/10/14(月) 18:39:00.67
2chで質問する時点で効率悪いのにこのアフォは何言ってんの?
0446デフォルトの名無しさん2013/10/14(月) 19:05:37.10
こんなこと極めてる段階で、その気になれば(仕上げとして)Cでごりごりっと書けば
効率は出しやすいことくらいわかってるわけで、つまり、何を今さら
0447デフォルトの名無しさん2013/10/14(月) 19:27:02.32
>>444
boost::any使うと動的確保が必要になるしRTTIもコストかかるよ、多分関数呼び出しのコストより高いと思う
処理はファンクタを渡せるようにすれば汎用的になるぞ
http://ideone.com/nOv2E1
0448デフォルトの名無しさん2013/10/14(月) 20:26:44.27
>思う
なんだ思う厨か
相変わらずベンチデータもなして糞みたいな妄想を垂れ流してるんだな
0449デフォルトの名無しさん2013/10/14(月) 20:35:00.58
関数呼び出しのコストより確実に高い。嘘だと思うなら検証してみれば?
これでオッケー。
0450デフォルトの名無しさん2013/10/14(月) 20:37:05.32
思う厨がソース出さずに確実だと言い張っても痛いだけ
0451デフォルトの名無しさん2013/10/14(月) 20:37:31.54
思うhoge
0452デフォルトの名無しさん2013/10/14(月) 20:42:11.45
ベンチマークとりまhoge
0453デフォルトの名無しさん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 だと思うのでベンチするなり好みで選ぶなり好きにしろや
0454デフォルトの名無しさん2013/10/16(水) 05:21:10.02
質問
あるapiでリエントラントな関数の呼び出しを要求される関数があるのですが
FuncA(FuncB)
FuncBはリエントラントでなければならない

リエントラントというのはグローバルにアクセスしたらリエントラントでなくなる、という説明があったのですが
グローバル変数を書き換えないアクセスでもアウトですか?
0455デフォルトの名無しさん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 にアクセスしている部分は処理系によってはクリティカルセクションで囲むことになるだろう
0456デフォルトの名無しさん2013/10/16(水) 06:00:39.66
>>454
アウト
0457デフォルトの名無しさん2013/10/16(水) 06:32:03.54
>>456
理由は?
0458デフォルトの名無しさん2013/10/16(水) 07:39:07.77
無難なコードを書け
0459デフォルトの名無しさん2013/10/16(水) 09:10:51.51
>>454
書き換えなきゃ即値と同じ
0460デフォルトの名無しさん2013/10/16(水) 09:12:30.33
>>455
これでdo while間がエントラントになるということですか?試してみます

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

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

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

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

char *str
char* str


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

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

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

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

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

もっと言えば

char *str[]
char* str[]

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

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

とかいけるでしょ。

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


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

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

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

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

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

int *a
と
long *a

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

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

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

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

>>497
自分もそう思ってるんだけど
ただ、
char[] で宣言できてもよさそうなもんだけど
0501デフォルトの名無しさん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;
のようなパースが難しくなるので、非現実的。
0502デフォルトの名無しさん2013/10/19(土) 02:02:24.87
char* const strみたいな場合は、変数に*付けられないな
0503デフォルトの名無しさん2013/10/19(土) 02:48:37.13
見様見真似のときはchar *strで
ひとときchar* strをこじらせて
痛い目をみてchar *strにもどる

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

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

  宗  教

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

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

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


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

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

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

int ( * a )

だから何の問題も無いと思うけど???
0534デフォルトの名無しさん2013/10/19(土) 12:56:49.23
>>526
これだな
一番楽だしこう書いて問題が起きることはまずない
0535デフォルトの名無しさん2013/10/19(土) 12:58:53.58
int *const a;
0536デフォルトの名無しさん2013/10/19(土) 14:08:01.83
>>520
それを言うなら std::vector<std::vector<int *> > っしょ
0537デフォルトの名無しさん2013/10/19(土) 15:58:24.98
>>526
一貫性無さ過ぎてウゼー
0538デフォルトの名無しさん2013/10/19(土) 16:33:53.96
ポインタは int *a;
参照は int & r;
だなぁ、なんでこうなったのかわからん。
0539デフォルトの名無しさん2013/10/19(土) 16:36:20.03
ああ int & r; だとコンパイルエラーだすまんn
0540デフォルトの名無しさん2013/10/19(土) 16:45:49.64
>>538
typedef int *int_pointer;
って書くの?
0541デフォルトの名無しさん2013/10/19(土) 17:07:09.84
>>539
いやメンバ宣言なら通るだる?
0542デフォルトの名無しさん2013/10/19(土) 17:08:08.16
int * & r; のときはどうすんねん
0543デフォルトの名無しさん2013/10/19(土) 17:08:37.34
変わらんだろ
0544デフォルトの名無しさん2013/10/19(土) 17:09:30.32
そんなもんが必要なら設計から見直せ
0545デフォルトの名無しさん2013/10/19(土) 17:11:56.56
てか、それコンパイル通るっけ?
0546デフォルトの名無しさん2013/10/19(土) 17:15:26.94
>>545
どれ?
0547デフォルトの名無しさん2013/10/19(土) 17:19:14.20
>>546
>>542
0548デフォルトの名無しさん2013/10/19(土) 17:24:54.75
とおる
http://toro.2ch.net/test/read.cgi/tech/1313183984/403
http://ideone.com/ArKwc
0549デフォルトの名無しさん2013/10/19(土) 17:39:20.89
>>545
どうみても通るとしか
0550デフォルトの名無しさん2013/10/19(土) 18:13:19.92
>>540
それは誰だって
typedef int* int_pointer;
にするだろ、評価の優先順位からいって。
見た目の一致だけみて一貫性とかいってる奴はあほ
0551デフォルトの名無しさん2013/10/19(土) 18:15:54.41
>>550
評価の優先順位という意味不明な供述をしており
0552デフォルトの名無しさん2013/10/19(土) 18:18:35.62
typedef int* int_ptr;
int_ptr a1;
int* a2;

これなら一貫性あっていいな
0553デフォルトの名無しさん2013/10/19(土) 18:19:46.98
int *派が「一貫性」という日本語の意味を
理解していないことは理解したOK
0554デフォルトの名無しさん2013/10/19(土) 18:22:41.54
>>551-553の実体は同じ
0555デフォルトの名無しさん2013/10/19(土) 18:27:07.82
区別が必要なときだけ空白を入れる
一貫性あるね
0556デフォルトの名無しさん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の一部を
くっつけようなどという発想は愚か。
0557デフォルトの名無しさん2013/10/19(土) 18:47:31.05
>>553 は >>556 を頑張って理解してから糞して寝ろ
OK?
0558デフォルトの名無しさん2013/10/19(土) 19:05:47.13
>>556
> type-specifier-seqの一部とinit-declaratorの一部を
> くっつけようなどという発想は愚か。

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


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

右寄せしたら駄目だよ!
0566デフォルトの名無しさん2013/10/19(土) 19:30:30.09
STLって何ですか?
0567デフォルトの名無しさん2013/10/19(土) 19:49:45.90
Class... Args
Class ...Args
お前らはどっち?
でClassのあとの...ってどう呼ぶんだ
args...
この...は演算子なんだろ? 
0568デフォルトの名無しさん2013/10/19(土) 19:51:26.45
>>567
おまえ演算子の意味わかってないだろ
0569デフォルトの名無しさん2013/10/19(土) 21:38:47.63
>>566
うなだれるリーゼント野郎
05707102013/10/19(土) 21:45:56.51
>>569
くそ、ちょっと笑ってしまった。
油断してたぜ。
0571476=5182013/10/19(土) 23:22:19.92
>>559
俺
すまん
0572デフォルトの名無しさん2013/10/20(日) 00:44:47.06
templateのおすすめ解説書を教えて下さい
和書の方が嬉しいですが、洋書でも大丈夫です
0573デフォルトの名無しさん2013/10/20(日) 00:52:06.87
Modern C++ Design
0574デフォルトの名無しさん2013/10/20(日) 01:01:49.66
>>559
少なくとも「論」争レベルには達してない。
仕様確認して、あとはツールに任せればいい事を思い込みで言ってるだけ。
0575デフォルトの名無しさん2013/10/20(日) 02:00:58.99
そもそも一行で複数の変数を定義しようってのがC系のアホなとこじゃん
そのアホなルールを通すための文法が>>556なわけで
なんでint a, *b; みたいに 型であるポインタが変数側に来るんだポインタは型じゃないのかよボケってとこから
出発したint* b;って書いて型を明確にしようって意味論的発想を理解できない化石脳な
カス野郎が未だに存在していることが理解不能だよ
0576デフォルトの名無しさん2013/10/20(日) 02:07:44.01
一行で書きたがる奴は、メンバー変数も
int a, *b, *const *c;
みたいに書くのか?
0577デフォルトの名無しさん2013/10/20(日) 02:17:13.16
見た目より規格の意味が大事って論調の>>556みたいな奴は、関数の宣言もint *foo(int *a)とかなんだろうか
変数は複数宣言のために仕方ないってのも分かるが
0578デフォルトの名無しさん2013/10/20(日) 02:24:52.88
宣言や定義をカンマで並べる人は
char *func1(), func2(), **func3();
関数でもこうやって宣言してる?
0579デフォルトの名無しさん2013/10/20(日) 02:35:12.81
根本的にはCの変数宣言の構文が汚いのが悪いな。
それにどう対応するかで意見が分かれる。

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

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

最近のライブラリはみんなこうだから、合わせておけば将来安心
0581デフォルトの名無しさん2013/10/20(日) 03:12:25.94
終わらねえw
0582デフォルトの名無しさん2013/10/20(日) 03:49:33.61
一行で複数の変数を定義しようってのは
古い言語だからしょうがない
0583デフォルトの名無しさん2013/10/20(日) 04:12:17.53
モニタの解像度が糞低くて縦に間延びできなかったんだよな
0584デフォルトの名無しさん2013/10/20(日) 05:20:49.68
>>470
コードページ間で変換を行うAPIはC標準じゃなくてWindows API側にある。
ここより適したスレで質問するべき
0585デフォルトの名無しさん2013/10/20(日) 05:25:47.85
>>584
fopen_sにUTF8でファイル名指定したいという人に
文字コード変換は他で訊けとはこれ如何に。
しかしfopen_sとかキモイ関数はC++14にも
入るんだよなきっと
0586デフォルトの名無しさん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とこれらで全て相互変換出来る筈だが
・・・実際実用に出来るかというと・・・なぁ・・・
0587デフォルトの名無しさん2013/10/20(日) 05:55:24.20
>>586
一つ前のレスも読めない文盲はしんでいいよ
0588デフォルトの名無しさん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);
0589デフォルトの名無しさん2013/10/20(日) 06:21:02.76
規格より俺のコードの見た目が大事っていう
577みたいなバカが設計すると
cout << kuso
みたいなウンコ禿ライブラリができあがる
0590デフォルトの名無しさん2013/10/20(日) 06:24:21.25
>>587
585-586は欠片も重複して無いんだが、読んでたらどーなるんだ?
0591デフォルトの名無しさん2013/10/20(日) 06:39:20.00
�@>>470と関係無いレスが無くなります
�A現在のロケールで表現できない文字コード間の変換ができるようになります
�BC++スレでC99という関係無い言語を持ち出すことが減るでしょう
�CUTF-8というWindowsのsetlocaleでは制限を受ける文字コードが扱いやすくなります
�D彼女ができます
�Eswprintfの使い方を間違えなくなります
�F宝くじで1億円あたるかも?
0592デフォルトの名無しさん2013/10/20(日) 06:41:50.77
>>589
リーダブルなコードを書くためには見た目が大切だよ

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

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

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

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

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

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

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

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

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

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


お前、なに途中で話を変えてんだよ
デタラメ過ぎだろ
0606デフォルトの名無しさん2013/10/20(日) 10:36:41.13
>>601
特に強制されたわけじゃないが、いつのまにか一行一宣言になったな、俺は。
複数の宣言を併記してもタイプ量以外メリットないし。
0607デフォルトの名無しさん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]];
はどうするんだっけ? 一行に書かないようするん?
0608デフォルトの名無しさん2013/10/20(日) 11:06:01.31
論破って何だよw
バカは死ねよ
0609デフォルトの名無しさん2013/10/20(日) 11:32:16.26
test<int (*const)[8]>
test<int(*const)[8]>
どっちが正しい?
0610デフォルトの名無しさん2013/10/20(日) 11:38:40.00
>>601
そうでもないと思うけどね。
俺もいつの間にか一行一変数が習慣になっているなあ。
定義時初期化を心がけてるからだと思うんだけど、一行一変数の方が楽なんだよね。
0611デフォルトの名無しさん2013/10/20(日) 11:45:59.46
ISO/IEC 14882:2011自体がコーディングルールが
全く統一されていないUNKOです
0612デフォルトの名無しさん2013/10/20(日) 12:02:41.50
コードに芸術性を持たせるためには、
1行1mean が必須かな。
だから、1行1変数が良いと思うよ。


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

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

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

おやすみ。

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


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

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

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

>>623 とかな
0626デフォルトの名無しさん2013/10/20(日) 13:21:22.15
うんこに触ったえんがちょだからしょうがない
0627デフォルトの名無しさん2013/10/20(日) 13:33:28.54
>>605
つまり、一行でまとめる人は脳味噌が腐ってると?
0628デフォルトの名無しさん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;
}
0629デフォルトの名無しさん2013/10/20(日) 15:12:00.46
>>628
無い
0630デフォルトの名無しさん2013/10/20(日) 15:12:11.59
ある
0631デフォルトの名無しさん2013/10/20(日) 15:12:48.89
ないある
0632デフォルトの名無しさん2013/10/20(日) 15:15:10.74
ポインターってゆるゆるだから、実行時に何とかなると思ったんですけどw
0633デャtォルトの名無bオさん2013/10/20(日) 15:18:49.53
C++のラムダの仕様嫁
無理
仕組みを考えればできないことは明らか
0634デフォルトの名無しさん2013/10/20(日) 15:19:25.33
なるわけねーーだろたわけ
0635デフォルトの名無しさん2013/10/20(日) 15:19:27.35
汚いけどグローバル変数介すしかないんじゃないの

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

int main(){
 c_function(delegate);
}
0636デフォルトの名無しさん2013/10/20(日) 15:26:21.93
std::function使えばいいだろ
何でも入るし
0637デフォルトの名無しさん2013/10/20(日) 15:34:42.25
libffiでクロージャ作れば可能
0638デフォルトの名無しさん2013/10/20(日) 15:37:42.89
>>633
ラムダなら余裕だろ
0639デフォルトの名無しさん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;
}
0640デフォルトの名無しさん2013/10/20(日) 15:47:21.69
>>639
アホかそんなことやったら落ちるに決まってんだろ
ttp://ideone.com/FEmUgG
0641デフォルトの名無しさん2013/10/20(日) 15:51:50.09
>>640
いや、addはこっちでいじれないライブラリに入っているので、
呼び出し側でなんとかしたいのです。
0642デフォルトの名無しさん2013/10/20(日) 15:53:34.07
bindしても元のポインタの引数の数が変わるわけじゃない
Cの関数ポインタ相手に変形は無理
0643デフォルトの名無しさん2013/10/20(日) 15:56:00.60
そうですか・・・
引数の型と種類は知っている前提でもなんとかなりませんか?
bindほど一般的な操作は求めていないので。
0644デフォルトの名無しさん2013/10/20(日) 15:57:50.41
どうしようもないな
0645デフォルトの名無しさん2013/10/20(日) 15:58:11.85
人生から見つめなおせ
0646デフォルトの名無しさん2013/10/20(日) 16:01:27.33
>>643
Cの関数ポインタは関数のコードのアドレスそのものであり、付随するデータを受け渡す仕組みはない。よって付随するデータを受け渡す仕組みは関数ポインタを受け取るライブラリー側が別途提供するべきであり、もしそれがないならそれはそのライブラリーの欠陥と言える。
0647デフォルトの名無しさん2013/10/20(日) 16:04:16.71
C++相談室なのに普通の質問にくだらない煽り入れる奴はなんなん
0648デフォルトの名無しさん2013/10/20(日) 16:05:36.05
そうだね
ごめんね
0649デフォルトの名無しさん2013/10/20(日) 16:06:56.23
>>646
ありがとうございます。そもそもできないということが理解できなかったのですっきりしました。

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

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

こうだな。
カンマ区切りの複数宣言は最低だな!
0665 ◆QZaw55cn4c 2013/10/20(日) 18:49:35.35
>>618
かまいたちの夜?
0666デフォルトの名無しさん2013/10/20(日) 19:11:53.70
かまい?それ誰?
0667デフォルトの名無しさん2013/10/20(日) 19:37:41.93
構い ワ行活用ですね。
0668デフォルトの名無しさん2013/10/20(日) 20:41:24.64
>>662
>>602にも謝れや
0669デフォルトの名無しさん2013/10/20(日) 20:44:05.70
ごめんなさい
0670デフォルトの名無しさん2013/10/20(日) 20:45:55.53
ほんとすまん
0671デフォルトの名無しさん2013/10/20(日) 20:53:54.67
いやーわりいわりい
0672デフォルトの名無しさん2013/10/20(日) 22:20:19.04
さーせんっした
0673デフォルトの名無しさん2013/10/20(日) 22:36:59.62
左遷した
0674デフォルトの名無しさん2013/10/20(日) 22:41:15.94
北国の〜
0675デフォルトの名無しさん2013/10/20(日) 22:49:06.38
JR北海道
0676デフォルトの名無しさん2013/10/20(日) 23:06:47.04
ん?また朝鮮人低脳Qが湧いていたのか
0677デフォルトの名無しさん2013/10/21(月) 03:12:38.04
>>643
インラインアセンブラ使用可って条件でいいなら無理やり出来なくもない
ただしこれはWindows(32bit)でしかテストしてない
ttp://ideone.com/DzKAXy
0678デフォルトの名無しさん2013/10/21(月) 05:13:46.71
>>677
それくらいしか手は無いわな。
けど汎用性持たせる努力しすぎだろ、なげぇww
0679デフォルトの名無しさん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
0680デフォルトの名無しさん2013/10/21(月) 07:59:47.31
>>679
・closure()の長さがMAX_FCN_SIZE(128)を超える
・closure()の中で別の関数と共有された相対jmpがある
・closure()の中でスタック検査などで相対アクセスが挿入される
・thisptr=(Functor *)MAX_INTの即値が分割・変形される(MIPSとかでよくあるアレや、0xFFの符号拡張等)
・mallocで確保したメモリ領域の実行可能フラグが無く、それを検査される
などの問題が無ければOK。
0681デフォルトの名無しさん2013/10/21(月) 08:15:07.90
>>680
最後以外>>677と条件変わらなくね
同一環境のコードだから分割とかが問題になりそうもないし
0682デフォルトの名無しさん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:}}ってやって長さと位置もインラインアセンブリ中で求めてた。
0683デフォルトの名無しさん2013/10/21(月) 13:22:39.67
>>682
処理系が同じなら同じ値なんだから別に起きても大丈夫でしょ。
0684デフォルトの名無しさん2013/10/21(月) 15:48:39.31
関連
VCのx64クロスコンパイラは、インライン汗受け付けないとかじゃなかったっけ
どういうことかというと、めんどくさいぞこらMS手抜きしないで仕事しろ
一応フォローすると、ml64が添付になってるのでそれ使えぽい

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

生配列と生ポ
vectorと生ポ

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

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

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

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

>>817
コンストラクタ?
ごめん、こっちも意味わからん...
0819デフォルトの名無しさん2013/10/26(土) 23:22:22.99
>>818
コピーコンストラクタで発生する副作用は最適化で消えないって意味だろ。
コピーコンストラクタで発生する副作用が全て最適化で消滅する場合は最適化の結果コピーも消えるだろうけど。
0820デフォルトの名無しさん2013/10/26(土) 23:36:01.32
>>818
最適化って関数呼び出しとか、一定の条件で止まっちゃうのよ。
もしかしてインラインなクラス前提で話してる?
0821デフォルトの名無しさん2013/10/26(土) 23:36:02.83
>>819
消えるのか、消えないのかはっきりしろよ...
0822デフォルトの名無しさん2013/10/26(土) 23:37:11.80
>>820
そもそもプリミティブの話だよ...
0823デフォルトの名無しさん2013/10/26(土) 23:37:18.30
>>815
これが一番意味分からん
0824デフォルトの名無しさん2013/10/26(土) 23:39:07.94
>>822
プリミティブ型ならそもそもコピー自体しない
省略って何だって、やっぱ意味不明
0825デフォルトの名無しさん2013/10/26(土) 23:52:35.55
もうごちゃごちゃするからレス書く前にプリミティブかクラスか両方か書こうず
0826デフォルトの名無しさん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までしか数えてくれません。
あとどこが修正必要でしょうか。
0827デフォルトの名無しさん2013/10/27(日) 01:26:01.81
ULつけるとか
0828デフォルトの名無しさん2013/10/27(日) 01:51:30.62
>>826
32bitシフトして足すのが足りないんじゃねえの?
0829デフォルトの名無しさん2013/10/27(日) 07:27:00.69
>>824
> プリミティブ型ならそもそもコピー自体しない

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

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

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

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

assert(value >= 0);
sqrt(value);
0857デフォルトの名無しさん2013/10/27(日) 18:32:52.33
>>847
入力値が非数または数値として不正なビットパターンの場合
0858デフォルトの名無しさん2013/10/27(日) 19:58:06.34
>>854
たしかに、結構長い間マやってるけど、コンパイラのバグにぶち当たったのは X68K の gcc だけだな。
0859デフォルトの名無しさん2013/10/27(日) 20:03:28.36
お前らc++の知識どこで手に入れてんの?
0860デフォルトの名無しさん2013/10/27(日) 20:09:25.87
何に限らずこういう奴いるよな
「あいつは何か良い知識の仕入先を持ってるに違いない」と思う奴
今までに10回位はそういう事聞かれたわ
0861デフォルトの名無しさん2013/10/27(日) 20:17:34.95
俺知識の仕入先よく聞かれるわ―
10回くらいそういうこと聞かれたわ―
0862デフォルトの名無しさん2013/10/27(日) 20:19:38.10
>>859
hoge サイト
0863デフォルトの名無しさん2013/10/27(日) 20:20:25.75
そんなだからお前は何も出来ないんだよ
0864デフォルトの名無しさん2013/10/27(日) 20:21:23.03
そういうときは、2chって答えることにしている
0865デフォルトの名無しさん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
0866デフォルトの名無しさん2013/10/27(日) 20:33:50.61
でもC++の知識って他の言語と比べて手に入れにくいだろ
0867デフォルトの名無しさん2013/10/27(日) 21:15:52.41
C++は文法、ライブラリ、コンパイラ、ターゲット環境、目的などが多岐に渡ってるから
ググるにしても調べたいことが明確じゃないと混乱するってのはあるかもね
まあ20年近くC++やってても正直全容がわからんし、自分のペースで学べばいいんじゃない
0868デフォルトの名無しさん2013/10/27(日) 21:56:06.37
何とかC++って外人の書いた本読んでくと何となく分かったような気になるよ
0869デフォルトの名無しさん2013/10/27(日) 21:59:06.73
EffectiveC++のこと?
0870デフォルトの名無しさん2013/10/27(日) 21:59:55.93
読んでない人いるの?
0871デフォルトの名無しさん2013/10/27(日) 21:59:57.69
むしろこのスレの住人は
ProgrammingLanguageC++とか読んでるんだろうか
0872デフォルトの名無しさん2013/10/27(日) 22:28:54.95
Exceptional C++とか
0873デフォルトの名無しさん2013/10/27(日) 22:32:13.16
EffectiveC++も読んでいるか怪しい
i++でもめるぐらいだし
0874デフォルトの名無しさん2013/10/27(日) 22:42:22.49
effective c++は変な癖つくから読むなって教授に言われた
0875デフォルトの名無しさん2013/10/27(日) 22:44:22.28
C++の本って高いからhogeサイトしか読んでない
0876デフォルトの名無しさん2013/10/27(日) 23:09:44.32
>>874
教授にいわれても
0877デフォルトの名無しさん2013/10/27(日) 23:09:57.43
投資限度額がそんなに少ないと何も成果物ができないだろ
0878デフォルトの名無しさん2013/10/27(日) 23:24:15.81
exceptionalは真面目に読め
effectiveは漫談として読め、もしくは読むな
0879デフォルトの名無しさん2013/10/27(日) 23:24:30.02
>>871
あまりに誤植、誤訳が多い糞本だったので、
ブックオフに売りにいったら0円って言われたから、重いのでそのまま引き取ってもらった。
0880デフォルトの名無しさん2013/10/27(日) 23:27:57.36
原著で読まないと
0881デフォルトの名無しさん2013/10/27(日) 23:56:33.38
教授は引きこもってコード書いてるだけだから変なコードだよ
で教授が読めないまともなコードは全部変な癖って片付ける
0882デフォルトの名無しさん2013/10/28(月) 00:05:14.55
Effective C++ってみんな読んでるっぽいから、変な癖だろうがそれが主流になっちゃしょうがないね
どこが変かはよく分からんが
0883デフォルトの名無しさん2013/10/28(月) 00:06:33.53
どっかのスレのまね
教育的 != 実用的

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

プロジェクトにそんな馬鹿が居たら速攻で首になるレベル
0886デフォルトの名無しさん2013/10/28(月) 01:49:52.29
結局どれを読めばいいの?
0887デフォルトの名無しさん2013/10/28(月) 01:51:47.29
そのサンプルが例外安全性にフォーカスしてないだけなんじゃないの?
0888デフォルトの名無しさん2013/10/28(月) 01:55:38.63
effective c++のクソなところ。
データメンバーをpublicにするなという話。
std::pairのような設計は完全にNGだと主張されている。まるで子供。ほんと馬鹿。
徹底したカプセル化主義者かと思いきや、データメンバーを外から丸見えにするアクセサーをひたすら肯定してる。
まず内部のデータ構造ありきで、インターフェイスは後から内部に依存するように設計されてるじゃないか。馬鹿かこの馬鹿。
この馬鹿に洗脳されたら生涯駄目人間だからな。気を付けろ。
0889デフォルトの名無しさん2013/10/28(月) 02:09:43.37
逆にいい書き方書いてある本教えてくれよ
0890デフォルトの名無しさん2013/10/28(月) 02:14:07.00
>>887
operator=の正しい書き方はこうだ
の例でもやらかしてるから救いようがない
0891デフォルトの名無しさん2013/10/28(月) 02:46:49.70
四六時中例外安全を気にしてコードを書く不毛さよ
これはべつにC++に限らんけどね
0892デフォルトの名無しさん2013/10/28(月) 02:52:56.14
つまり exceptional C++ 嫁 ってことでいいのかな
0893デフォルトの名無しさん2013/10/28(月) 07:03:21.99
両方読めタコ
0894デフォルトの名無しさん2013/10/28(月) 09:31:48.94
http://d.hatena.ne.jp/henschel/20091031/p1

だってさ
0895デフォルトの名無しさん2013/10/28(月) 09:53:05.34
中学生の読書感想文みたいに子供っぽい文章だな
0896デフォルトの名無しさん2013/10/28(月) 10:04:02.41
>>891
上手にコツを掴むと気にしなくても例外安全になれるから気にしなくていいぞ
0897デフォルトの名無しさん2013/10/28(月) 11:10:46.92
>>888
>徹底したカプセル化主義者かと思いきや、データメンバーを外から丸見えにするアクセサーをひたすら肯定してる。
変更を考慮すりゃそうするのが当たり前だろ
0898デフォルトの名無しさん2013/10/28(月) 11:53:47.98
>>897
こういう駄目人間ができるから、effectiveは話半分で読むのがいいんだな
0899デフォルトの名無しさん2013/10/28(月) 12:12:20.74
全部のメンバーについて片っ端にアクセサー書いてpublicで見せる奴は消えてくれ
0900デフォルトの名無しさん2013/10/28(月) 12:38:26.03
全部そうしろなんて言ってないだろ文盲
0901デフォルトの名無しさん2013/10/28(月) 13:09:47.70
>>900
その文盲に消えてくれって言ってるんだろ>>899は。
0902デフォルトの名無しさん2013/10/28(月) 13:10:11.26
effectiveもexceptionalも具体的な技術・仕様そのものではなくそれを通してその裏にある哲学・思想を教えるための本でしょう
その段階から理解できずに即物的なテクニック・コード例としてしか読めない人には害があるでしょうね
0903デフォルトの名無しさん2013/10/28(月) 13:18:08.35
最初にそのまま公開してしまうと、
継承したクラスがデータメンバの設置や読み出しで、
何か処理をはさみたいと思っても、できなくなる。

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

というクラスに

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

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

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

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

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

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

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

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


ゲッタセッタ重症者の典型例
0969デフォルトの名無しさん2013/10/29(火) 00:26:20.99
こいつどんだけ心に傷おってんの
ゲッタセッタやるやつに苛められてたのかな
ざまあw
0970デフォルトの名無しさん2013/10/29(火) 00:43:39.76
メンバ変数の存在に基づいてクラスインターフェースを考えてるのがダメ。
0971デフォルトの名無しさん2013/10/29(火) 01:28:03.52
アクセサの作りすぎが原因で破綻したプロジェクトもあるしな
0972デフォルトの名無しさん2013/10/29(火) 01:29:53.66
どれ?
0973デフォルトの名無しさん2013/10/29(火) 01:30:08.28
どうせお前のせいだろ
0974デフォルトの名無しさん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;}

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

PGクラスとSEクラスを分けるか分けないかというレベルの話だ。
0985デフォルトの名無しさん2013/10/29(火) 05:37:40.38
SEはデザインインターフェースとコーディングインターフェースを持ち
PGはコーディングのみでおk
0986デフォルトの名無しさん2013/10/29(火) 09:05:11.95
C++相談室 part106
http://toro.2ch.net/test/read.cgi/tech/1383005075/
0987デフォルトの名無しさん2013/10/29(火) 09:20:02.81
>>986
おつhoge
0988デフォルトの名無しさん2013/10/29(火) 10:29:07.98
ここまでCOMなし

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