[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 03/03 12:56 / Filesize : 271 KB / Number-of Response : 1015
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C++相談室 part130



1 名前:デフォルトの名無しさん(ワッチョイ f37a-QmV0) mailto:sage [2017/03/31(金) 08:47:49.65 ID:UkLjKqcm0.net]
次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512

C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。

前スレ
C++相談室 part129
echo.2ch.net/test/read.cgi/tech/1483940967/

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

■長いソースを貼るときはここへ。■
 codepad.org/
 https://ideone.com/

[C++ FAQ]
https://isocpp.org/wiki/faq/
www.bohyoh.com/CandCPP/FAQ/ (日本語)
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured

445 名前:デフォルトの名無しさん (オッペケ Sr71-LgKm) mailto:sage [2017/06/11(日) 00:40:20.06 ID:GyEdwZPXr.net]
例えば「トリビアル」の定義はわかっても意図がわからないとコンテナーのテンプレートを正しく書くことは難しい
だが挫折の多くは文面の解釈よりも「正しい仕様を確認しようとしたが規格を読んでもわからなかった」パターンに思える

446 名前:デフォルトの名無しさん (ワッチョイ 5be4-OlK+) mailto:sage [2017/06/11(日) 00:47:50.47 ID:orY9bj1l0.net]
コンパイルできないコードに価値は無い
コンパイラの方が全てにおいて正しい

447 名前:デフォルトの名無しさん (ワッチョイ 0baa-BUW4) mailto:sage [2017/06/11(日) 03:24:02.05 ID:/4sxfWxQ0.net]
分からない時に、規格書を読んでも、分からない

具体的な用例集が必要。
法律で言えば、具体的な判決

こう書いたら間違いで、これが正しいみたいな例。
だから規格書から、その用例集を作るのに、長い研究期間がいる

そういう意味で、MISRA-C のように、多くの企業が参加して、研究すべき。
製品の品質を担保すべき

448 名前:デフォルトの名無しさん (ワッチョイ 5be4-OlK+) mailto:sage [2017/06/11(日) 03:58:12.87 ID:orY9bj1l0.net]
それ言語設計者とコンパイラ開発者にしか価値無いよね

449 名前:デフォルトの名無しさん (ワッチョイ 2311-W6lL) mailto:sage [2017/06/11(日) 08:09:11.36 ID:q49UmmFG0.net]
そもそも MISRA は規格の解説書じゃないし
ワッチョイ 0baa-BUW4 は壮大に勘違いしてる

450 名前:デフォルトの名無しさん (ワッチョイ 859a-1pl6) mailto:sage [2017/06/11(日) 09:54:14.55 ID:IXRoGBtM0.net]
>>438
MISRA-C はどこで読めるのか?

451 名前:デフォルトの名無しさん (ワッチョイ 956f-ujiq) [2017/06/11(日) 11:09:38.17 ID:TqhJN8GP0.net]
ググることも出来ないやつには永遠に読めない
読む必要ないけど

452 名前:デフォルトの名無しさん (ワッチョイ 8b97-sCoW) [2017/06/11(日) 15:09:26.57 ID:qjl5AbWq0.net]
MISRA-Cは、正式ルートだと金出して買うしかないよね。
ドラフト無料とかもなかった気がする。

453 名前:デフォルトの名無しさん (ワッチョイ 356d-Rt+9) mailto:sage [2017/06/11(日) 17:44:56.04 ID:bT5ki42c0.net]
MISRA-C はときとして理不尽な要求をしている気がする



454 名前:デフォルトの名無しさん (ワッチョイ 2311-W6lL) mailto:sage [2017/06/11(日) 18:01:31.88 ID:q49UmmFG0.net]
理不尽に見えるけど高信頼性のためには我慢してねって言うスタンスだから

455 名前:デフォルトの名無しさん (オッペケ Sr71-LgKm) mailto:sage [2017/06/11(日) 18:34:49.88 ID:r6AQJQ0Cr.net]
サイトのサーバー証明書もマトモに管理できない低能が高信頼性を語るとか、冗談にもほどがある

456 名前:デフォルトの名無しさん (ブーイモ MM43-ViKn) [2017/06/12(月) 00:14:27.30 ID:0xg96Y9iM.net]
C++さん、とんでもない機能を追加してしまう
hitomi.2ch.net/test/read.cgi/poverty/1497172293/

457 名前:デフォルトの名無しさん (ワッチョイ 15ea-b8DM) mailto:sage [2017/06/12(月) 01:43:06.58 ID:ZIdu3+Lh0.net]
ウィンドウクラスって、何に使うん?

458 名前:デフォルトの名無しさん (ワッチョイ 0baa-BUW4) mailto:sage [2017/06/12(月) 21:03:27.92 ID:VDG2Ae3J0.net]
MISRA-C 無しの、C言語は、製品に使ってはいけない。
品質が出荷レベルに達していないから

トヨタは、5% しか、MISRA-C を守っていないと聞いた。
100条なら、95で違反

459 名前:デフォルトの名無しさん (ワッチョイ 5be4-7qWT) mailto:sage [2017/06/12(月) 21:08:37.51 ID:SpclLUXp0.net]
サブセットで十分なケースもある

460 名前:デフォルトの名無しさん (オッペケ Sr71-LgKm) mailto:sage [2017/06/12(月) 21:21:24.13 ID:t42bNJ0Ar.net]
この句読点の使い方は得てしてリアルガイジ
MISRAとかいうのを信仰する奴とガイジとの相関は高いとみた

461 名前:デフォルトの名無しさん (ワッチョイ 23f0-D9zB) mailto:sage [2017/06/12(月) 23:44:06.01 ID:kzKhR3Vv0.net]
そもそも無矛盾のルール体系は構築できないのでは

462 名前:デフォルトの名無しさん (ワッチョイ 23aa-D9zB) mailto:sage [2017/06/13(火) 00:13:09.07 ID:eF+wsRwS0.net]
んなこたあない

463 名前:デフォルトの名無しさん (アウアウカー Sae1-lnJR) mailto:sage [2017/06/13(火) 02:09:41.46 ID:LBvGuQYWa.net]
無矛盾な公理体系は自己自身の無矛盾性を証明できない、
ってだけで無矛盾な体系は作れないとはいってない



464 名前:デフォルトの名無しさん (ドコグロ MM13-W6lL) mailto:sage [2017/06/13(火) 07:35:05.39 ID:siDT5/O8M.net]
MISRA なんて有り体に言えばベストプラクティスだしね
守らなくても正しいソフトは作れる
ただバカが多いところだと守らせればありがちなバグが防げるって言う効果はある

465 名前:デフォルトの名無しさん (ワッチョイ 956f-ujiq) [2017/06/13(火) 18:24:46.63 ID:+1XB2sfj0.net]
ベストプラクティスというよりは古文書
てかここはC++スレなんだが

466 名前:デフォルトの名無しさん (ワッチョイ 5b23-O+Nk) mailto:sage [2017/06/13(火) 18:34:11.65 ID:oGIP5B9w0.net]
配列の中身で重複している要素をカウントしてカウントが一番多かった要素を取り出す
っていうプログラム作りたいので知恵貸してください

{1,2,2,5,2,5}だったら2が取り出せるみたいな

467 名前:デフォルトの名無しさん (ワッチョイ eb23-D9zB) mailto:sage [2017/06/13(火) 18:42:01.39 ID:nMRvtxJa0.net]
「宿題は自分でやりなさい」
先生たちもこのスレ監視してるからなw

468 名前:デフォルトの名無しさん (ワッチョイ 5b23-O+Nk) mailto:sage [2017/06/13(火) 18:56:37.43 ID:oGIP5B9w0.net]
宿題じゃねーよw
調べても重複削除くらいしかみつけられない

469 名前:デフォルトの名無しさん (スッップ Sd43-3C0K) mailto:sage [2017/06/13(火) 19:08:11.56 ID:P4se3SJtd.net]
mapを使うとかソートしてしまうとか?

470 名前:デフォルトの名無しさん (ワッチョイ 5be4-7qWT) mailto:sage [2017/06/13(火) 19:09:11.39 ID:n4I5+XGH0.net]
日本語で書いてあるとおりのことをすればいいだけなのだが

471 名前:デフォルトの名無しさん (ドコグロ MM13-W6lL) mailto:sage [2017/06/13(火) 20:25:19.98 ID:siDT5/O8M.net]
>>460
さすがにMISRAを古文書とか言う奴はおばかと言われてももしょうがないと思うぞ w
変換規則とかはよく考えられてるし

472 名前:デフォルトの名無しさん (ワッチョイ 859a-1pl6) mailto:sage [2017/06/13(火) 20:39:09.12 ID:8eM6ZKoF0.net]
で,MISRA-C をどこで見ればいいの?売っているの?

473 名前:デフォルトの名無しさん (スップ Sd43-ryUj) mailto:sage [2017/06/13(火) 20:56:19.09 ID:gcB4XgG8d.net]
>>461
データやリソースによって適した実装方法が異なるな



474 名前:デフォルトの名無しさん (ワッチョイ 956f-ujiq) mailto:sage [2017/06/13(火) 20:56:21.35 ID:+1XB2sfj0.net]
だからそんなに考古学に興味あるんならググれよ
公式でPDF版£15で売ってるよ
繰り返し言うがここはC++スレだ

475 名前:デフォルトの名無しさん (ワッチョイ dba6-LgKm) mailto:sage [2017/06/13(火) 23:06:22.18 ID:apqWicsH0.net]
クソなコードしか思いつかなかった
ideone.com/3IBm07

476 名前:デフォルトの名無しさん (ワッチョイ 23af-Fz1p) mailto:sage [2017/06/13(火) 23:56:53.24 ID:G30+7Gz/0.net]
それだと最大要素見つけるのに無駄に2ループするからこの方がよくね
ideone.com/AMCSuy

477 名前:デフォルトの名無しさん (ワッチョイ 239f-AL/g) mailto:sage [2017/06/14(水) 06:51:42.68 ID:Bb4iazb50.net]
どうもしっくり逝かんな
ideone.com/mH3sLq

478 名前:デフォルトの名無しさん (ドコグロ MM51-W6lL) mailto:sage [2017/06/14(水) 06:58:07.10 ID:xl37jtKCM.net]
>>469
ひょっとして MISRA-C++ の存在も知らない老害さん?

479 名前:デフォルトの名無しさん (オッペケ Sr71-LgKm) mailto:sage [2017/06/14(水) 07:13:45.93 ID:97YMYHupr.net]
「: public binary_function」
はて、規格のDで見たような

480 名前:デフォルトの名無しさん (ワッチョイ 859a-ryUj) mailto:sage [2017/06/14(水) 07:42:18.88 ID:ROBFB8K40.net]
>>461
配列の要素数 : n
要素の値の範囲 : m

計算オーダー
ソート&カウント : n log n
固定配列のカウンタ : max(n, m)
map のカウンタ : n log m
単純な2重ループ : n^2

かな

481 名前:デフォルトの名無しさん (ワッチョイ 956f-ujiq) mailto:sage [2017/06/14(水) 07:44:57.00 ID:mEpEgwpO0.net]
>>473
話のコンテキストも無視して突然MISRA-C++を出してくるとか頭大丈夫ですか?

482 名前:デフォルトの名無しさん (ワッチョイ 859a-ryUj) mailto:sage [2017/06/14(水) 07:51:46.28 ID:ROBFB8K40.net]
てことで、

配列の取りうる値が狭い場合、狭い範囲に変換できる場合はvectorによるカウンタ

取りうる値の種類が少ないことはわかっているが、値からインデックスに簡単に変換できない場合はmapによるカウンタ

一般的にはソート&カウント

による実装が良いのでは?

483 名前:デフォルトの名無しさん (ワッチョイ 859a-ryUj) mailto:sage [2017/06/14(水) 08:01:12.72 ID:ROBFB8K40.net]
ソート&カウント の場合
配列の値の大小比較の定義が必要
非破壊の場合は配列と同じサイズのメモリが必要

vectorカウンタの場合
配列の値からインデックス値に簡単に変換可能である必要がある
インデックス値分 x カウンタサイズ のメモリが必要

setカウンタの場合
配列の値の大小比較の定義が必要
配列の値の種類分 x setのノード のメモリが必要

単純2重ループの場合
一番要求することが少ない
配列の値が同じかどうか判別出来れば良い



484 名前:デフォルトの名無しさん (ワッチョイ 859a-ryUj) mailto:sage [2017/06/14(水) 08:07:23.67 ID:ROBFB8K40.net]
配列の値のコピーのコストが大きい場合
などを考えるとさらに別の方法が考えられる

485 名前:デフォルトの名無しさん (ドコグロ MM13-W6lL) mailto:sage [2017/06/14(水) 08:16:37.97 ID:SzLmysikM.net]
>>476
話のコンテキストも理解できてない老害乙

486 名前:デフォルトの名無しさん (ブーイモ MM43-O+Nk) mailto:sage [2017/06/14(水) 08:32:13.08 ID:1Ro22eP7M.net]
みんなありがとう
やってみる

487 名前:デフォルトの名無しさん (スプッッ Sd51-RGMd) [2017/06/14(水) 08:51:35.81 ID:JEM2dfxwd.net]
いえいえ

488 名前:デフォルトの名無しさん (ワッチョイ e3af-VSCS) mailto:sage [2017/06/15(木) 02:16:45.12 ID:Kprt2KgZ0.net]
vectorのテンプレートに当てるクラスにはデフォルトコンストラクが必須なんでしたっけ?

489 名前:デフォルトの名無しさん (ワッチョイ 274b-eVPi) mailto:sage [2017/06/15(木) 02:57:56.05 ID:WlVNVHON0.net]
いいえ
03まではコピーできること
11からは破棄できること
が最低限の要件

490 名前:デフォルトの名無しさん (ワンミングク MMaa-JSHy) mailto:sage [2017/06/15(木) 05:30:50.78 ID:HQ6fr84VM.net]
>>483
必要だよ

491 名前:デフォルトの名無しさん (アウアウカー Sa33-yC4D) mailto:sage [2017/06/15(木) 09:11:26.58 ID:qU51R9EPa.net]
使うメンバ関数に依るけどデフォルトコンストラクタが必要なものはなくね
必要な場面が思い付かんし

492 名前:デフォルトの名無しさん (ワントンキン MMaa-JSHy) mailto:sage [2017/06/15(木) 10:49:56.10 ID:cMMWNP19M.net]
std::vector<MyObject> v;
これMyObjectにデフォルトコンストラクタないとコンパイルできなくない?

493 名前:デフォルトの名無しさん mailto:sage [2017/06/15(木) 11:06:30.68 ID:s1y5pVNvW]
>487
ideone.com/1s6Xim



494 名前:デフォルトの名無しさん (オッペケ Srab-H4RH) mailto:sage [2017/06/15(木) 11:01:39.88 ID:aq+4THbXr.net]
>>484
根拠は?

495 名前:デフォルトの名無しさん (アウアウカー Sa33-yC4D) mailto:sage [2017/06/15(木) 11:19:41.25 ID:qU51R9EPa.net]
>>487
コンパイルできるよ
https://ideone.com/J9k1y6

496 名前:デフォルトの名無しさん (ワッチョイ 274b-eVPi) mailto:sage [2017/06/15(木) 11:23:27.43 ID:L9OZrg3x0.net]
>>487
その例のその時点ではvの要素数は0でMyObjectは一つも構築されない
そしてテンプレートの性質として要求されない部分の実体化はされないので
実際には呼ばれない部分のコードがコンパイルエラーにはなる問題にもあたらない

497 名前:デフォルトの名無しさん (スップ Sd7a-FPX1) mailto:sage [2017/06/15(木) 11:50:20.24 ID:T9X0CufJd.net]
その理屈だとデストラクタも不要になるが、実際はデストラクタは必要

498 名前:デフォルトの名無しさん (ワッチョイ 8baa-vAEL) [2017/06/15(木) 12:01:45.59 ID:UVt8Gat10.net]
>>492
そりゃvectorのデストラクタで要素のデストラクタが呼ばれる(テンプレートのインスタンス化が行われる)んだから

499 名前:デフォルトの名無しさん (スプッッ Sd3b-Ir2K) mailto:sage [2017/06/15(木) 12:32:05.19 ID:TLt9F5bfd.net]
>>486
resizeは?

500 名前:デフォルトの名無しさん (ワッチョイ 56e4-l3wW) mailto:sage [2017/06/15(木) 12:35:16.93 ID:st+URCRI0.net]
そのあたりのことはどっかに書いてあった

501 名前:デフォルトの名無しさん (ワントンキン MMaa-vAEL) [2017/06/15(木) 12:42:14.22 ID:HosU7tvHM.net]
>>494
こぴ

502 名前:デフォルトの名無しさん (ワントンキン MMaa-vAEL) [2017/06/15(木) 12:43:54.29 ID:HosU7tvHM.net]
>>494
コピーコンストラクタがあれば引数2つの方が使える

503 名前:デフォルトの名無しさん (スップ Sd7a-FPX1) mailto:sage [2017/06/15(木) 12:53:22.51 ID:T9X0CufJd.net]
>>493
中身は知ってるよ
>>491の理屈と合わないって言ってるだけで



504 名前:デフォルトの名無しさん (オッペケ Srab-H4RH) mailto:sage [2017/06/15(木) 14:19:10.82 ID:aq+4THbXr.net]
「使うメンバ関数に依るけどデフォルトコンストラクタが必要なものはなくね」
 ↓
「resizeは?」
 ↓
「コピーコンストラクタがあれば引数2つの方が使える」

これがイケヌマと言うやつか

505 名前:デフォルトの名無しさん (ワッチョイ bb11-yC+1) mailto:sage [2017/06/15(木) 15:13:39.32 ID:0w39VBC10.net]
333/+C/333
}[amo]*7*
%/$/@0000/*/"2BTOLA"~

506 名前:~ []
[ここ壊れてます]

507 名前:デフォルトの名無しさん (ワッチョイ bb11-yC+1) mailto:sage [2017/06/16(金) 08:33:30.61 ID:YhgtDNjG0.net]
<<<C++>>>
}
000-0
001-EK,L,A%&*17&>>=<HUFMO#$BUZ,DOL%$,"LTAR"===7,2&$%\72<&\\7>3%,
002-"GYU","LA"

***"AGILA"***
GOJU-$+$%7.2!$^±%WOLR%,,,

508 名前:デフォルトの名無しさん (ワッチョイ 8baa-vAEL) [2017/06/16(金) 09:54:15.30 ID:rTwb7eLL0.net]
>>499
え?resizeするのにデフォルトコンストラクタ必要じゃないよね?

509 名前:デフォルトの名無しさん (スップ Sd7a-FPX1) mailto:sage [2017/06/16(金) 10:48:52.10 ID:+l0M7jEud.net]
なんで必要じゃないと思うんだか

510 名前:デフォルトの名無しさん (スップ Sd7a-FPX1) mailto:sage [2017/06/16(金) 10:51:59.72 ID:+l0M7jEud.net]
resizeとサイズ指定のコンストラクタ
この2個は必要

他に必要なのが有るかは知らない

511 名前:デフォルトの名無しさん (ササクッテロレ Spab-O+YK) [2017/06/16(金) 13:52:01.14 ID:uEZP+i89p.net]
ぜんぜんわからない
僕たちは雰囲気でvectorを使っている

512 名前:デフォルトの名無しさん (オッペケ Srab-H4RH) mailto:sage [2017/06/16(金) 18:08:28.52 ID:h6HoRUoNr.net]
>>497のような文脈を理解できず関係ないことを言い出す残念なオツムだと
>>502のようにさらにとんちんかんなことを言い出すのだろうきっと

513 名前:デフォルトの名無しさん (ワッチョイ 8b9a-FPX1) mailto:sage [2017/06/16(金) 19:00:27.85 ID:exN5gWxV0.net]
2chでみんなが文脈を読んで書いてると思うのもどうかと思う

>>497 は質問とか流れとか関係なく単に思った事を書いたんだろうなと思う
>>502 は思考力も行動力も無い可愛そうな人なんだろうなと思う



514 名前:デフォルトの名無しさん (ワッチョイ 8b9a-FPX1) mailto:sage [2017/06/16(金) 19:06:58.58 ID:exN5gWxV0.net]
おれも流れを無視して書いてみよう

自分でvectorを作ってみると躓くのが、メモリのアロケートや解放を伴わない、指定位置に対してのコンストラクタやデストラクタの呼び出し
ここは他の実装をカンニングしてしまった
他は特に難しいところはなく、ひたすらメンバー関数を作る作業

vectorはlistやmapに比べると作るのが簡単

515 名前:デフォルトの名無しさん (ワントンキン MMaa-vAEL) [2017/06/16(金) 20:32:33.08 ID:1QoHt37uM.net]
むしろ >>486 がresizeの要素数だけ指定したときにデフォルトコンストラクタが使われるということぐらい解ってて言ってるように見えるんだけどな。C++98まではオーバーロードですらない全く同じメンバーだったわけで。

文脈読んでないのはどっちなんだろうね。

516 名前:デフォルトの名無しさん (スップ Sd7a-FPX1) mailto:sage [2017/06/16(金) 20:58:35.54 ID:+l0M7jEud.net]
イミフ
解説よろしく

517 名前:デフォルトの名無しさん (オッペケ Srab-H4RH) mailto:sage [2017/06/16(金) 23:20:55.70 ID:jqjhiiMFr.net]
単に思ったことを書いてみたすごい例は>>495だな
読み返すと深いものがある

518 名前:デフォルトの名無しさん (ワッチョイ 96a6-H4RH) mailto:sage [2017/06/18(日) 14:45:58.32 ID:pAWWq9QO0.net]
エピス何とかさんって
エピステーメー 迷惑 でググると出てくる人?

519 名前:デフォルトの名無しさん (ワントンキン MMaa-JSHy) mailto:sage [2017/06/18(日) 15:04:30.19 ID:maGnATACM.net]
そう

520 名前:デフォルトの名無しさん (ブーイモ MMaf-4fPX) mailto:sage [2017/06/18(日) 17:37:06.92 ID:qo9bGziFM.net]
ぐぐって最初に出てきた記事を読んできたけど、どっちもどっちな感じだなあ。

ただ一つ言えるのは、エピスの記事はいつもcounterが題材でとてもつまらない。

521 名前:デフォルトの名無しさん (ワッチョイ aeaa-vAEL) [2017/06/19(月) 02:44:16.89 ID:vY2cw8HX0.net]
ぐぐって最初に出てきた記事を読んできたけど、どちらかというと記事の主の方が苦しい言い訳してる感じがするなぁ。
ただ一つ言えるのは、てらているでえぴすてーめーの解答見てると質問者の理解を手助けするような解答にはみえないから好きではない。

522 名前:デフォルトの名無しさん (ワッチョイ 96af-VSCS) mailto:sage [2017/06/19(月) 04:56:20.14 ID:ClMyuu520.net]
namespace A{
static int hoge;
}

class B
{
public:
static int fuga;
};

これらを複数のcppファイルでincludeした場合、
A::hogeはファイルスコープごとにできて
B::fugaはファイルスコープ間で共通
で合ってる?

523 名前:デフォルトの名無しさん (オッペケ Srab-H4RH) mailto:sage [2017/06/19(月) 08:39:44.53 ID:S/voQGxrr.net]
現規格ではfile scopeという言葉の定義が無いことに気付いた



524 名前:デフォルトの名無しさん (ワッチョイ ba9f-C7l9) mailto:sage [2017/06/19(月) 08:46:39.99 ID:9+UYKLHD0.net]
hogeの方はextern付けないと大量生成されるぞ

525 名前:デフォルトの名無しさん (ワッチョイ ba9f-C7l9) mailto:sage [2017/06/19(月) 08:47:46.44 ID:9+UYKLHD0.net]
あ、staticか…わざとやっているのか

526 名前:デフォルトの名無しさん (ワッチョイ 136f-98cR) mailto:sage [2017/06/19(月) 10:43:51.86 ID:m1J/TEED0.net]
>>516
合ってない
以上

527 名前:デフォルトの名無しさん (オッペケ Srab-H4RH) mailto:sage [2017/06/19(月) 10:53:54.51 ID:S/voQGxrr.net]
注意事項は有るとして、合っているかと言えば合っていると思ったのだがはて

528 名前:デフォルトの名無しさん (ワッチョイ 96af-VSCS) mailto:sage [2017/06/19(月) 11:20:57.70 ID:ClMyuu520.net]
>>520
namespace Aが付けばstaticはファイルに依存しないクラスのstaticメンバーみたいになるということですかね?

529 名前:片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdda-adb9) mailto:sage [2017/06/19(月) 11:40:33.07 ID:UZhaSadud.net]
変数のアドレスを確認すればわかるじゃん。

530 名前:デフォルトの名無しさん (アウアウカー Sa33-yC4D) mailto:sage [2017/06/19(月) 12:39:33.09 ID:Edn2ErbFa.net]
>>522
そんなことない
あなたが>>516で言ってたのであってる

正確にはファイルスコープじゃなくて翻訳単位だが

531 名前:デフォルトの名無しさん (ワッチョイ 96af-VSCS) mailto:sage [2017/06/19(月) 12:43:52.17 ID:ClMyuu520.net]
ですよね
ありがとうございます

532 名前:デフォルトの名無しさん (オッペケ Srab-H4RH) mailto:sage [2017/06/19(月) 16:50:18.24 ID:OcegvzUdr.net]
>>523
ほれ
ideone.com/RH0dUb
質問者がこういう確認をしてしまう可能性は考えなかったのかね?

533 名前:デフォルトの名無しさん (スッップ Sdda-FPX1) mailto:sage [2017/06/19(月) 17:22:49.29 ID:0iIdkSRqd.net]
さすがににそれはテスト方法が悪い



534 名前:デフォルトの名無しさん (オッペケ Srab-H4RH) mailto:sage [2017/06/19(月) 19:46:59.76 ID:OcegvzUdr.net]
>>527
undefined behaviorとno diagnostics requiredだらけの言語で「アドレス確認すればわかる」とだけ言うのはあまりに安易な助言ではないか、と言っているのであって
確認方法の良し悪しには興味が無い

535 名前:デフォルトの名無しさん (ワッチョイ 8b9a-FPX1) mailto:sage [2017/06/19(月) 19:56:58.85 ID:QZxUhfYw0.net]
お前が何に興味があるかなんてまったく興味がない

536 名前:デフォルトの名無しさん (アウアウカー Sa33-C4gc) mailto:sage [2017/06/19(月) 21:31:25.95 ID:/bUZDhU4a.net]
>>520
>>515に出てきたえぴすなんたらと同じで、仮に知識があったとしても建設的な議論ができずに場をかき混ぜるだけの迷惑な存在に思える。

537 名前:デフォルトの名無しさん (ブーイモ MM97-4fPX) mailto:sage [2017/06/20(火) 23:15:54.41 ID:Mr4YEhWoM.net]
>>515
そもそも苦しい言い訳すらできない事案はwebページに掲載してないだろうしなぁ

538 名前:デフォルトの名無しさん (ワッチョイ 1311-H4RH) mailto:sage [2017/06/21(水) 12:51:52.91 ID:+NLKQqoi0.net]
>>530
こんなとこで他人を中傷してるお前は
迷惑記事の書き手と同レベルだな

539 名前:デフォルトの名無しさん (ワッチョイ 7a15-yC+1) mailto:sage [2017/06/21(水) 16:13:27.27 ID:w7AAKRwP0.net]
>>530
質問に必要なのは回答であって議論じゃない。
議論が建設的であろうがなかろうが質問に対する反応としては不適当だ。
回答が不十分だっていうことならそれは質問者が対話を重ねていくべきことで、
やみくもに話題を広げていく行為はそれこそ場をかき乱すだけだよ。

質問を元にした話題で雑談したっていいと思うが、
質問に対しては質問の回答を返すのが合理的な姿勢で、
先回りしてまで手取り足取り教えてやるような板じゃなかろう。
ム板が殺伐してるのは普通のこと。

540 名前:デフォルトの名無しさん (オッペケ Srab-H4RH) mailto:sage [2017/06/21(水) 23:22:10.09 ID:rrguzdDtr.net]
>回答が不十分だっていうことならそれは質問者が対話を重ねていくべき

「建設的な議論」の認識に齟齬が見られたが
>>530>>533の意見は概ね一致したようだ
めでたしめでたし

541 名前:デフォルトの名無しさん (ワッチョイ 9f3d-SU2+) mailto:sage [2017/06/22(木) 18:59:54.46 ID:RmXtROOS0.net]
templateのstaticメンバの初期化(実体化)についてわかる人、
教えてもらえないでしょうか。

次のようなクラス構成があります
template<typename T> class A {
public:
A() : foo(NULL) {}
...

void * foo;
};

template<typename T> class B {
public:
...
static A<T> bar;
};

class C : public B<C> {
public:
...
};

ここで、B<C>::barを実体化しないといけないので
1) 以下のように書くとVC++では問題ない
template<> A<C> B<C>::bar;
2) 以下のように書くとclang(xcode)では問題ない
template<> A<C> B<C>::bar = {};
3) GCC 4.9では1)でコンパイルは通るが実体化されない。

ということで、GCCでどう書いたらビルドが通るか教えてください。
よろしくお願いします。m(_ _)m

542 名前:デフォルトの名無しさん (オッペケ Sr0b-jRIn) mailto:sage [2017/06/22(木) 19:26:04.75 ID:Pj60YbTlr.net]
>template<> A<C> B<C>::bar;

本当に実体化をしようとしているのか、明示的な実体化が必要なのか疑問だ
template<…> X →テンプレート定義
template<…> X<Y> →テンプレート定義(部分特殊化)
template<> X<…> →フルの特殊化
template X<…> →明示的実体化
X<…> →使うことで暗黙の実体化

543 名前:デフォルトの名無しさん (ワッチョイ 9f3d-SU2+) mailto:sage [2017/06/22(木) 19:46:14.05 ID:RmXtROOS0.net]
>>536
レスありがとうございます。

実際のコードでは、AとBはそれぞれのヘッダファイルにすべて記述され、
Cのみcppでコード生成しています。1)及び2)はCのソース内に記述しています。
このため、スペシャライズは不要な筈ですが、B内で定義しているstatic変数は
Bのクラス内で使用しているため、実体化が必要です。
bar自体はコンストラクタがあるので、普通のstatic変数のように書けば
良いのではないかと思うのですが…。
何か勘違いしてるんですかね?



544 名前:デフォルトの名無しさん (ワッチョイ 9f3d-SU2+) mailto:sage [2017/06/22(木) 20:07:59.54 ID:RmXtROOS0.net]
>>535です、連投すいません。
どうやら解決したようです、デバッグしてみないと本当に解決しているか
どうかはわかりませんが(^^;

stackoverflowにヒントがありました。

https://stackoverflow.com/questions/2342550/static-member-initialization-for-specialized-template-class
// needs a copy constructor!
template<> Type Class<Arguments>::member = Type();

コピーコンストラクタで無理やり実体を作るという…。
vc、llvm、gccでそれぞれ書き方が違うとは、やな世の中になったもんだw

545 名前:デフォルトの名無しさん (オッペケ Sr0b-jRIn) mailto:sage [2017/06/22(木) 20:44:12.75 ID:Pj60YbTlr.net]
特殊化の説明を読んでいるのがよくわからんが
G++で通るコードとやらを貼っとくか

ideone.com/u4h6so






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<271KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef