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


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

C++相談室 part124



1 名前:デフォルトの名無しさん(ワッチョイ 7fc9-G+K4) mailto:sage [2016/04/03(日) 00:22:24.07 ID:ZT/2NYWz0.net]
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレに
お願いします。

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

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

■長いソースを貼るときはここへ。■
 codepad.org/
 ideone.com/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured

925 名前:デフォルトの名無しさん (スプー Sd78-MTTD) [2016/05/19(木) 10:59:11.66 ID:eVW3ynUMd.net]
>>898
勝手な解釈すんな

926 名前:デフォルトの名無しさん (スプー Sd28-MTTD) mailto:sage [2016/05/19(木) 10:59:37.70 ID:ZQvJITQCd.net]
>>899
Yes

927 名前:デフォルトの名無しさん (ワッチョイ 1c7b-dmih) mailto:sage [2016/05/19(木) 11:02:36.04 ID:TN2vwqPV0.net]
>>901
じゃあどういう解釈すればよかったんだよ?
お前はグローバルとシングルトンが本質的に違うとでも思ってるのか?
シングルトンのほうが柔軟性があることは認めるがね

928 名前:デフォルトの名無しさん (ワッチョイ 653c-rvT4) [2016/05/19(木) 11:03:15.86 ID:n4iAdyIo0.net]
日本マイクロソフト人事部の西川昌邦(さいかわまさくに)は人殺しだ!!
「あなたのような従業員は会社のパフォーマンスにとってマイナスなので早く死んでください」
などと自殺教唆を公然と行った!!
丁寧に言えば何を言ってもいいというものではない!!これはヤクザや借金取りが脅迫をする時に
「いついつまでに金一億円をお振り込みください。間違った判断をなされないことを期待しています」
と発言するのと同じレベルだ!!
「しかもそれを注意してやったら世間はわれわれの味方だ。文句があるなら訴えてきたらよろしい。メールを電番を公開したければ
どうぞご自由に。世論はわれわれを賛辞するするメールを送付するだろう」
などとイカ様気取りも大概にしろという発言を行った!!
抗議先 日本マイクロソフト人事本部 西川昌邦
masaikaw@microsoft.com
090-2541-1718

929 名前:デフォルトの名無しさん (ワッチョイ bd54-MTTD) mailto:sage [2016/05/19(木) 11:08:16.28 ID:STy3ELMD0.net]
>>903
初心者かよ…
シングルトンパターンとグローバル変数じゃスコープの要件の時点で既に違うだろ

930 名前:デフォルトの名無しさん (スプー Sd78-MTTD) [2016/05/19(木) 11:11:13.83 ID:eVW3ynUMd.net]
>>903
どれがマシかという話をしてるんだろ
静的変数が是か否かなんて今更くだらない
勝手な解釈すんなアホが

931 名前:デフォルトの名無しさん (ワッチョイ 1c7b-dmih) mailto:sage [2016/05/19(木) 11:12:18.94 ID:TN2vwqPV0.net]
>>905
「スコープの要件」とは?
何のことなのかよく分かりませんので詳しくご教示ください

932 名前:デフォルトの名無しさん (ササクッテロ Spbd-7Gsa) mailto:sage [2016/05/19(木) 11:13:39.15 ID:uMP5aDx/p.net]
やっぱそうだよね…長年CやってたせいでいつまでたってもCライクな書き方が抜けない、重症です

933 名前:デフォルトの名無しさん (ワッチョイ bd54-MTTD) mailto:sage [2016/05/19(木) 11:14:15.63 ID:STy3ELMD0.net]
>>907
シングルトンに静的インスタンスとしての概念はあっても公開の概念はない
デザパタやり直せ



934 名前:デフォルトの名無しさん (ワッチョイ 1c7b-dmih) mailto:sage [2016/05/19(木) 11:15:29.40 ID:TN2vwqPV0.net]
>>906
>どれがマシかという話をしてるんだろ
>静的変数が是か否かなんて
さあ?それこそあんたの勝手な解釈だな
是か否かなんて話は俺はしてないよ文盲

935 名前:デフォルトの名無しさん (スプー Sd78-MTTD) [2016/05/19(木) 11:18:04.90 ID:eVW3ynUMd.net]
勝手に人の話を勘違いして例にあげて
アホな解釈で話を歪めてトンチンカンな事言っておいてこの言い草
マジヤバイ

936 名前:デフォルトの名無しさん (ワッチョイ 1c7b-dmih) mailto:sage [2016/05/19(木) 11:18:30.55 ID:TN2vwqPV0.net]
>>909
>公開の概念はない
ほう。そこをもう少し詳しく

937 名前:デフォルトの名無しさん (ワッチョイ bd54-UmRV) mailto:sage [2016/05/19(木) 11:20:22.01 ID:STy3ELMD0.net]
>>912
いやこれ以上は答えないよ
既に質問ではなく相手を打ち負かすつもりのレスだからね
お前はもう最初のレスから詰んでるよ
残念だったな

938 名前:デフォルトの名無しさん (ワッチョイ 1c7b-dmih) mailto:sage [2016/05/19(木) 11:20:51.55 ID:TN2vwqPV0.net]
>>911
そうだとしたら何を言いたいのか分からないようなテキストを書いたお前の責だバーカ

939 名前:デフォルトの名無しさん (ワッチョイ bd54-UmRV) mailto:sage [2016/05/19(木) 11:22:16.79 ID:STy3ELMD0.net]
いつの間にこんなにレベルが下がったんだここは
ちょっと前までC++の仕様を少しでも間違えば後ろから刺される勢いだったのに…

940 名前:デフォルトの名無しさん (スプー Sd78-MTTD) [2016/05/19(木) 11:24:10.88 ID:eVW3ynUMd.net]
>>914
勝手に人の話を勘違いで解釈して赤っ恥をこいた男の末路がこのレスに込められていますね

941 名前:デフォルトの名無しさん (ワッチョイ 1c7b-dmih) mailto:sage [2016/05/19(木) 11:24:40.59 ID:TN2vwqPV0.net]
>>913
「答えない」
ワロタwww「答えられない」だろwww
「お前は詰んでる」って勝利宣言して逃げるパターン出たね

942 名前:デフォルトの名無しさん (ワッチョイ 917b-P/BW) [2016/05/19(木) 11:28:17.40 ID:shk5tFZP0.net]
>>917
お前が一人で勉強すればすむ話

943 名前:デフォルトの名無しさん (ワッチョイ bd54-UmRV) mailto:sage [2016/05/19(木) 11:32:43.43 ID:STy3ELMD0.net]
>>917
普通の人間なら一つ前のレスで十分理解できるだろうに
長々と必死に抗弁を試みようとする時点で、
外面を保つ事のみを目的としてる残念な人間なのだとしか評価できないね
まあその外面もお前の頭の中にしかないんだが



944 名前:デフォルトの名無しさん (スプー Sd28-MTTD) mailto:sage [2016/05/19(木) 11:53:46.12 ID:ZQvJITQCd.net]
グローバル変数とシングルトンの違いを論点にしてる人々がいるようだが...
どっちも使いたくないから他の機構を考える、という流れで是非よろしく

945 名前:デフォルトの名無しさん (JP 0H31-1UMr) mailto:sage [2016/05/19(木) 12:08:41.77 ID:73EK6oIWH.net]
シングルトンが重宝されるのは初期化処理が複雑で
処理順解決が問題になる場合

そんなケースなら流石にグローバル丸出しなんてしない

946 名前:デフォルトの名無しさん (ワッチョイ 9102-xKv1) mailto:sage [2016/05/19(木) 12:43:08.90 ID:CdsyDRqW0.net]
使わなくてもいけるという発言を見る度に使えばいいじゃんとしか思えないわ
gotoもガンガンつかっていく

947 名前:デフォルトの名無しさん (ワッチョイ 1c7b-dmih) mailto:sage [2016/05/19(木) 12:43:08.91 ID:TN2vwqPV0.net]
>>919
外面云々とかこんな匿名掲示板で何ってるんだよバーカ
鏡と睨み合って自分自身に向かって諭してろよ中身なしの超絶ゴミクズ君

948 名前:デフォルトの名無しさん (ワッチョイ e97b-MTTD) mailto:sage [2016/05/19(木) 12:58:35.08 ID:hRS9mr1R0.net]
まーたPostMessage君が出てきたのか
暑くなると頭のネジが5本くらい抜け落ちる奴が増えるから本当に迷惑だ

949 名前:デフォルトの名無しさん (オッペケ Srbd-MTTD) mailto:sage [2016/05/19(木) 13:02:34.95 ID:Ibvbou6Qr.net]
>>886
なぜ解決にならないのかkwsk

950 名前:デフォルトの名無しさん (オッペケ Srbd-MTTD) mailto:sage [2016/05/19(木) 13:26:11.48 ID:Ibvbou6Qr.net]
物事の概念・本質をとらえることのできない低能>>903には、グローバル変数とシングルトンの区別がつかなくても仕方ない

>>890
>>889は名前空間スコープの変数をグローバル変数と呼んでいるようだが
名前空間スコープとクラススコープの違いぐらいは理解した方がいい。
むあ「何にもついて」の「何の意味もない」なのか文脈を無視して単語レベルで反応する猿には難しいかったかも

951 名前:デフォルトの名無しさん (オッペケ Srbd-MTTD) mailto:sage [2016/05/19(木) 13:27:31.80 ID:Ibvbou6Qr.net]
>>926に訂正
 誤 何にもついて
 正 何について

952 名前:デフォルトの名無しさん (ワッチョイ 7162-xKv1) mailto:sage [2016/05/19(木) 13:40:03.86 ID:+RT//Rk20.net]
昔MFCのアプリで CPen, CBrush, COLORREF あたりを singleton に入れて使ってた。
singleton じゃなくてもいいけど、singleton が適してると思う。

953 名前:デフォルトの名無しさん (ワッチョイ 1c7b-dmih) mailto:sage [2016/05/19(木) 13:41:01.02 ID:TN2vwqPV0.net]
はいはいいつもの語り口きました
実務じゃ全く役に立たない無能さんw本は売れた?www



954 名前:デフォルトの名無しさん (スプー Sd28-MTTD) mailto:sage [2016/05/19(木) 13:53:09.52 ID:ZQvJITQCd.net]
>>925
結局は特定の変数に状態を保持しておくという本質は変わらないから。
もちろんスコープやアクセス範囲の制御ができるとか監視ができるとかのメリットはわかるけど、それは付随的なもの。

955 名前:デフォルトの名無しさん (ワッチョイ bd54-UmRV) mailto:sage [2016/05/19(木) 14:07:52.18 ID:STy3ELMD0.net]
>>923
それで内容の理解はできたのか?
何年プログラムやってその体たらくなのかしらんが、少しは精進したほうがいいぞ

956 名前:デフォルトの名無しさん (ワンミングク MMd0-P/BW) [2016/05/19(木) 14:12:05.72 ID:BWP2yuCgM.net]
>>926
なぜ名前空間とクラススコープの違いを理解していないと思ったのか

957 名前:デフォルトの名無しさん (ワッチョイ bd54-UmRV) mailto:sage [2016/05/19(木) 14:21:47.31 ID:STy3ELMD0.net]
ステートレスにしろってのは同意するけど、
グローバル変数とステートレス/ステートフルの議論は別だと思うよ
スコープ関係ないし

958 名前:デフォルトの名無しさん (アウアウ Sab5-V4Zo) mailto:sage [2016/05/19(木) 16:44:31.58 ID:iQAxMb//a.net]
static constexpr double global_pi = 3.14;

959 名前:デフォルトの名無しさん (ササクッテロ Spbd-7Gsa) mailto:sage [2016/05/19(木) 16:55:51.62 ID:uMP5aDx/p.net]
#deine PI 3.14でよくね

960 名前:デフォルトの名無しさん (スプー Sd28-MTTD) mailto:sage [2016/05/19(木) 17:48:13.21 ID:ZQvJITQCd.net]
状態の変化があって寿命の長いデータを、変数に入れることなく管理したい

961 名前:デフォルトの名無しさん (ワッチョイ 7bf8-xFql) mailto:sage [2016/05/19(木) 18:27:00.27 ID:ap9POzY/0.net]
そこでクロージャですよ

962 名前:デフォルトの名無しさん (ワッチョイ 415b-xKv1) mailto:sage [2016/05/19(木) 19:42:52.90 ID:GUQu4Juu0.net]
644とかパーミッション設定できたらよかったのに。

963 名前:デフォルトの名無しさん (ワッチョイ 1c7b-dmih) mailto:sage [2016/05/19(木) 20:11:59.41 ID:TN2vwqPV0.net]
>>934
普通にM_PI使えばいいと思うの
それに3.14じゃ精度悪すぎるよ



964 名前:デフォルトの名無しさん (フォンフォン FF7c-rvT4) [2016/05/19(木) 20:43:53.03 ID:e5/wWDviF.net]
日本マイクロソフト人事部の西川昌邦(さいかわまさくに)は人殺しだ!!
「あなたのような従業員は会社のパフォーマンスにとってマイナスなので早く死んでください」
などと自殺教唆を公然と行った!!
丁寧に言えば何を言ってもいいというものではない!!これはヤクザや借金取りが脅迫をする時に
「いついつまでに金一億円をお振り込みください。間違った判断をなされないことを期待しています」
と発言するのと同じレベルだ!!
「しかもそれを注意してやったら世間はわれわれの味方だ。文句があるなら訴えてきたらよろしい。メールを電番を公開したければ
どうぞご自由に。世論はわれわれを賛辞するするメールを送付するだろう」
などとイカ様気取りも大概にしろという発言を行った!!
抗議先 日本マイクロソフト人事本部 西川昌邦
masaikaw@microsoft.com
090-2541-1718

965 名前:デフォルトの名無しさん (ワッチョイ bd54-MTTD) mailto:sage [2016/05/19(木) 21:46:59.31 ID:STy3ELMD0.net]
>>936
それ実装できたとして変数使わない意味ある?

966 名前:デフォルトの名無しさん (ワッチョイ bd54-MTTD) mailto:sage [2016/05/19(木) 21:49:04.86 ID:STy3ELMD0.net]
セッターゲッター的なのか?
それとも一意型みたいなのか?

967 名前:デフォルトの名無しさん (ワッチョイ 3ec0-xpBm) mailto:sage [2016/05/19(木) 22:05:29.27 ID:WYY/9sV80.net]
errno

968 名前:デフォルトの名無しさん (ワンミングク MMd0-P/BW) [2016/05/19(木) 22:22:12.59 ID:BWP2yuCgM.net]
とんちか何かかな?

969 名前:デフォルトの名無しさん (ブーイモ MM31-MTTD) mailto:sage [2016/05/19(木) 22:39:24.47 ID:TLDkaexbM.net]
>>943
それ真似るにはスレッド変数使わないといけないし、c++erは手本とすべきじゃないだろ

970 名前:デフォルトの名無しさん (ワッチョイ f063-MTTD) mailto:sage [2016/05/19(木) 23:07:06.91 ID:A0YFV+4B0.net]
>>932
「変数を非グローバルの名前空間スコープに置けばいいというわけではない」という>>889の主張に対して突然クラススコープの話を持ち出したからだが

971 名前:デフォルトの名無しさん (ワッチョイ f063-MTTD) mailto:sage [2016/05/19(木) 23:08:20.67 ID:A0YFV+4B0.net]
>>939
へー、ところでその普通のM_PIって何?

972 名前:デフォルトの名無しさん (ササクッテロ Spbd-7Gsa) mailto:sage [2016/05/19(木) 23:10:33.47 ID:MvX4mrmep.net]
へ?流石にネタかえ?
math.h使ったことあらず?

973 名前:デフォルトの名無しさん (ワッチョイ f063-MTTD) mailto:sage [2016/05/19(木) 23:12:52.89 ID:A0YFV+4B0.net]
>>934
そのstaticには何か意味があるのか



974 名前:デフォルトの名無しさん (ワッチョイ 9030-xKv1) mailto:sage [2016/05/19(木) 23:18:50.48 ID:W0ctNLpa0.net]
>>948
その反応は、「printfを知らない」レベルじゃないと使えないと思うぞ

975 名前:デフォルトの名無しさん (ワッチョイ 9102-xKv1) mailto:sage [2016/05/19(木) 23:19:22.62 ID:CdsyDRqW0.net]
>>948
>>947は喧嘩腰でしか会話できない人だからほっといたほうがいいけど
要するにM_PIは標準化されていなくて環境によっては定義されているとは限らないからつつかれている

976 名前:デフォルトの名無しさん (ワッチョイ 917b-P/BW) [2016/05/19(木) 23:20:03.66 ID:shk5tFZP0.net]
>>946
だからそれをグローバルというならpublicなクラススコープに置いた 静的変数もグローバルだろって話だよ。
外から見たらusing namespace出来るかどうかの違いしかないぞ

977 名前:デフォルトの名無しさん (ササクッテロ Spbd-7Gsa) mailto:sage [2016/05/19(木) 23:31:32.11 ID:MvX4mrmep.net]
>>951
そうなんか
よく分からんけど、俺が今まで触ったPCではどれも使えたし
だいたいの環境なら使えるやろ
そんなマイナー環境使ってる奴のことなんてシラネw

978 名前:デフォルトの名無しさん (ワッチョイ f063-MTTD) mailto:sage [2016/05/19(木) 23:50:33.37 ID:A0YFV+4B0.net]
Visual C++やICCがマイナーとは恐れ入る
gccですら規格に違反しないよう
-std=c11の時はM_PIが使えないようにしているというのに

979 名前:デフォルトの名無しさん (ワッチョイ a759-MTTD) mailto:sage [2016/05/20(金) 00:08:19.61 ID:B/K1dZEm0.net]
何かすごいカオスっぷりやなー。

980 名前:デフォルトの名無しさん (ワッチョイ 7b42-xKv1) mailto:sage [2016/05/20(金) 00:15:33.17 ID:DZyHkwIp0.net]
使えないなら自分で定義すれば良いだけなんでは?

981 名前:デフォルトの名無しさん (ワッチョイ e6cc-MTTD) mailto:sage [2016/05/20(金) 00:17:43.17 ID:Z0iObOq70.net]
計算機のPIボタンからおぼぼ

982 名前:デフォルトの名無しさん (ワッチョイ 1c7b-dmih) mailto:sage [2016/05/20(金) 01:04:20.91 ID:iM9BKZPP0.net]
>>954
規格厨の心の闇は深いな
Visual C++(_USE_MATH_DEFINESが必要だが)やg++では普通に使えるけどな
ここはC++スレなんだぞ
ICCはシラネ

983 名前:デフォルトの名無しさん (ワッチョイ f063-MTTD) mailto:sage [2016/05/20(金) 07:21:21.24 ID:e1TBDqG+0.net]
>>958
ICCも_USE_MATH_DEFINESで使える筈。
Visual C++はC++規格1.4p2に反しないよう_USE_MATH_DEFINESが必要にしてあると記憶していたが
確かにgccの-std=c++14の時の挙動が気になるな。
C++の規格上許されるの?



984 名前:957 (オッペケ Srbd-MTTD) mailto:sage [2016/05/20(金) 08:08:40.81 ID:yY8TibFar.net]
ちょっと考えたがVisual C++の実装が残念なだけで
C++では規格に反しない実装が可能なんだな。なるほど勉強になった。
だが処理系によって_USE_MATH_DEFINESが必要なものを「普通」と言って他人にすすめているという発想には及ばなかった失礼

985 名前:デフォルトの名無しさん (ワンミングク MMd0-MTTD) mailto:sage [2016/05/20(金) 08:14:16.19 ID:FD2q0K+3M.net]
boost::math::costants::pi<double>();

986 名前:デフォルトの名無しさん (ワンミングク MMd0-P/BW) [2016/05/20(金) 13:01:42.59 ID:GBvYzkJRM.net]
人を下に見ないと心の平穏保てない可哀想な人がいるね

987 名前:デフォルトの名無しさん (スプー Sd28-MTTD) mailto:sage [2016/05/20(金) 13:09:57.94 ID:88qDJ/vwd.net]
なんか書こうと思ったがやめた

988 名前:デフォルトの名無しさん (オイコラミネオ MM14-MTTD) [2016/05/20(金) 13:41:58.30 ID:EAAu5NmTM.net]
>>961
なげーよ

989 名前:デフォルトの名無しさん (ワッチョイ 7bf8-xFql) mailto:sage [2016/05/20(金) 13:45:22.04 ID:jCV1qcCq0.net]
>>964
#define PI boost::math::costants::pi<double>()

990 名前:デフォルトの名無しさん (アウアウ Sab5-MTTD) mailto:sage [2016/05/20(金) 15:24:20.36 ID:adOvMsP+a.net]
どうでもいいけどなんで#define使うの?

991 名前:デフォルトの名無しさん (ワッチョイ 7bf8-xFql) mailto:sage [2016/05/20(金) 15:34:32.24 ID:jCV1qcCq0.net]
const auto PI =
と書くより5バイトくらい短いから

992 名前:デフォルトの名無しさん (ワッチョイ bcbf-7Gsa) mailto:sage [2016/05/20(金) 17:24:15.12 ID:91VA6wxC0.net]
tan(-1)

993 名前:デフォルトの名無しさん (ワッチョイ 415b-xKv1) mailto:sage [2016/05/20(金) 19:26:27.89 ID:yqNTwCqH0.net]
acos(0)*2



994 名前:デフォルトの名無しさん (ワッチョイ 7b5b-xKv1) mailto:sage [2016/05/20(金) 19:36:46.02 ID:gU7EupTq0.net]
質問です。

内部クラスから外側クラスのインスタンスメンバを参照したいのですが、
ググッた感じでは参照を渡すしかないっぽいのですが、これってマジですか?
マジなら、面倒なので内部クラスのstaticに入れてしまおうかとも思っているのですが、これってありですか?
(外部クラスが生成される度に内部クラスが別々に生成されて大丈夫なのか、
それとも内部クラスとして書いても外にフラットに書いても同じで、クラスで唯一のstatic変数となってバグりますか?)
或いはこの場合に一般的に使われるような手法はありますか?

参考コード:動かしていないので雰囲気だけ確認してください。

class OuterClass {
class InnerClass {
static OuterClass* parent; // <- これあり?それとも OuterClassを複数作成しても唯一になって駄目?
void method_cpp0(int score){
parent->score += score; // <- こう使うつもり
}
void method_cpp1(int score, OuterClass* p) { // <- こうじゃないと駄目?
p->score += score;
}
void method_javascript(int s){
score += s; // JavaScriptはこれができる。これができればうれしい。
}
void method_java(int score){
OuterClass.this.score += score; // Java はこれができるらしい。これでもいい。
}
};
int score;
};

995 名前:デフォルトの名無しさん (ワッチョイ 1c7b-dmih) mailto:sage [2016/05/20(金) 19:51:35.59 ID:iM9BKZPP0.net]
>>969
あ゛ー
いいから普通にM_PI使え
規格原理主義者のたわごとなど完全無視しろ
もしクソバカ環境でコンパイルエラーが起きたら
#ifndef M_PI
#define M_PI 3.14159265358979323846
#endif
とかで如何なる問題も発生しない

996 名前:デフォルトの名無しさん (ワッチョイ bd6c-WkY+) mailto:sage [2016/05/20(金) 19:54:05.85 ID:BayA8c/P0.net]
>>970
ようわからんけど
別にstaticにせんでも
const OuterClass&をinnerClassにもたせてコンストラクタで指定すれば良い気がする

997 名前:デフォルトの名無しさん (ワッチョイ 7b5b-xKv1) mailto:sage [2016/05/20(金) 20:29:11.61 ID:gU7EupTq0.net]
>>972
コンストラクタでやるという記述もググッた時に見つかったのですが、
今回はInnerClassを一つではなく配列として持つので、メモリをケチろうかと。
コンストラクタで渡した方が確かに記述は綺麗なのですが。

とはいえ、改めて「プログラミング言語C++」を確認しても、
クラス継承の話は多くてもクラス内包の話がほぼ無いので、
一般的にはコンストラクタで「メンバ変数」として渡すのでしょうか。確かにこれだと確実です。
記述的にはコンストラクタ内でstaticに対して上書きしまくってもいいのですが、
これができるのか?というのは若干不安ですし。

998 名前:デフォルトの名無しさん (ワッチョイ bd6c-WkY+) mailto:sage [2016/05/20(金) 20:43:41.93 ID:BayA8c/P0.net]
OuterClassのインスタンスが一つならそれでもいいけど
それならそれで他に良い設計がありそうな気もする
それこそシングルトンだとか

999 名前:デフォルトの名無しさん (ワッチョイ 7b5b-xKv1) mailto:sage [2016/05/20(金) 20:56:18.27 ID:gU7EupTq0.net]
つまりstaticはどこに書いてあるクラスでも1つかもしれないと。
OuterClassは当面は1つで済みますが、今後複数化する可能性もあるので、シングルトンは駄目です。

余り真面目にC++やってなかったのですが、
内部クラスから外部クラスが階層アクセスできないのは、C++の仕様がちょっと古い気がします。
後発のJavaやJavaScriptは最初から出来るので。

ちなみに参考コード
class OuterClass {
class InnerClass { // 省略
};
int score;
vector<InnerClass> nodes;
};

1000 名前:デフォルトの名無しさん (スプー Sd28-MTTD) mailto:sage [2016/05/20(金) 21:02:34.05 ID:88qDJ/vwd.net]
>>973
Inner - Outer の関係にする必要性はどこにあるの?

1001 名前:デフォルトの名無しさん (ブーイモ MM31-MTTD) mailto:sage [2016/05/20(金) 21:12:02.35 ID:icw8VvxgM.net]
>>970
・staticメンバは

1002 名前:プログラムを通して一つ
・メモリをケチりたくてmethod_cpp1が可能ならそれがよいだろう
・JavaやJavaScriptでも結局は暗黙的にOuterClassへの参照を持つことになるのでInnerClassインスタンスごとにメモリを使うことになる
・InnerClassとOuterClassとの間にメモリ配置上の制約があるなら、ほかの手も考えられるが、配列で持つとのことなので恐らくダメだろう
・古いというのはわからなくもないが、後発の言語が暗黙的にやるコストについて意識しない人がいるのならあながち悪くはないのかもしれない
[]
[ここ壊れてます]

1003 名前:デフォルトの名無しさん (ワッチョイ bd54-UmRV) mailto:sage [2016/05/20(金) 21:20:44.60 ID:Czf9pjzL0.net]
>>971
いんや規格は重要だ
まず動くことが至上命題ではあるがそこ履き違えると底辺コーダーになっちまうぞ



1004 名前:デフォルトの名無しさん (ワッチョイ bd54-UmRV) [2016/05/20(金) 21:34:03.42 ID:Czf9pjzL0.net]
なんだP君だったのか…

>>970
メモリケチりたい状況で外の「インスタンス」にアクセスしたいってのは無理がある気がするな
俺ならOuterとInnerとは別に、もう一個クラス作ってそいつに両方に依存した処理やらせるかな

1005 名前:デフォルトの名無しさん (ワッチョイ bd54-UmRV) mailto:sage [2016/05/20(金) 21:38:07.10 ID:Czf9pjzL0.net]
>>977を良く見てなかったが、どうやら余計なレスだったようだ
自分もmethod_cpp1の適宜渡す方法に同意します

1006 名前:デフォルトの名無しさん (ブーイモ MMe9-MTTD) mailto:sage [2016/05/20(金) 21:56:53.90 ID:Dz9bHtQOM.net]
適宜渡すとして記述が煩雑になるのが問題のようだから、それを緩和する手は色々ありそうな気はする

1007 名前:デフォルトの名無しさん (ブーイモ MMe9-MTTD) mailto:sage [2016/05/20(金) 21:57:43.59 ID:Dz9bHtQOM.net]
あれID変わった

1008 名前:デフォルトの名無しさん (ワッチョイ fd10-MJjN) mailto:sage [2016/05/20(金) 22:09:45.76 ID:RCBW+7XV0.net]
>>934
M_PIが規格で定義されてるかとかいう議論も意味あるかもしれないけど、
そもそも、円周率はたとえが悪いだけなんじゃないの?
重力加速度とか万有引力定数とかならどうするのがベスト?(もちろん場合によるだろうが)

1009 名前:デフォルトの名無しさん (ワッチョイ bd54-UmRV) mailto:sage [2016/05/20(金) 22:23:37.08 ID:Czf9pjzL0.net]
>>981
ありそうな気はするが技巧的な方法しか思いつかないな

InnerInnerを作り、今のInnerの機能を移動し、Innerにはコンテナと親の参照を持たせる
そしてInnerInnerのmethod_cpp1のようなメソッドをInnerが委譲

これじゃ親から見た場合に多少はマシになるって程度で、コードも設計も汚いな

1010 名前:デフォルトの名無しさん (ワッチョイ 7b5b-xKv1) mailto:sage [2016/05/20(金) 22:43:44.89 ID:gU7EupTq0.net]
>>976
いや特にありません。そもそも非オブジェクト指向でも当然組めます。
ただ、色々試した結果、オブジェクト指向に慣れてくると、
Java的な「それ刻みすぎじゃねーの?」と思えるような所まで刻んだ方が
結果的に見やすかったり、後々融通が利くことが何となく分かってきました。
なので、今後はそうしようかと試しています。

>>977
詳細にありがとうございます。やはりstaticでは駄目ですか。
method_cpp1は今回は可能ですが、記述の抽象度が混ざるので出来ればクラス分けしたかったのです。
JavaやJavaScriptでもメモリ使用量が少ないわけではないのはその通りですが、
内部クラスからは外部クラスを参照するのはかなり普通のことなので、
これは言語として対応して欲しかったところです。今まで拡張されなかったのが不思議なくらいです。
これはコンパイラ側だけで完全に対応でき、実行時の追加コストはありません。
(不要ならコンパイル時点で外側クラスポインタの確保を止めることが出来る)
申し訳ありませんが、メモリ配置上の制約というのは何のことか分かりません。

1011 名前:デフォルトの名無しさん (ワッチョイ 7b5b-xKv1) mailto:sage [2016/05/20(金) 22:44:35.94 ID:gU7EupTq0.net]
ちなみに、やろうとしていることに近く、イメージ的に分かりやすいのは、「ライフゲームをオブジェクト指向で」です。

参考コード、非オブジェクト指向
bool map[64][64];
bool map_next[64][64];

for (int i=0

1012 名前:;i<64;i++)
for (int j=0;j<64;j++)
map_next[i][j] = life_exe(i,j);

参考コード、オブジェクト指向
class LifeGame {
class Dot {
int x,
int y;
void life_exe(){} // ここで外側の map, map_new に直接アクセスして更新させたい。
};
bool map[64][64];
bool map_next[64][64];
};

実際にやろうとしていることは、正規表現の探索に近いです。
ライフゲームのように外側変数が時系列で変化するものではないため、
探索途中経過(Dot)をオブジェクトとして持ち、
最初から各オブジェクトに終わりまで探索(life_exe)させる事が出来ます。
とはいえ、やはりメリットは大してありませんが。
[]
[ここ壊れてます]

1013 名前:デフォルトの名無しさん (ワッチョイ bcbf-7Gsa) mailto:sage [2016/05/20(金) 22:45:59.15 ID:91VA6wxC0.net]
>>983
ライブラリの数値を使うか自分で数値を定義しておくかな…
piとかeは数学関数で計算できるだけマシってことね
M_PI使わない理由として俺は十分納得できるかな



1014 名前:デフォルトの名無しさん (ワッチョイ caa6-xKv1) mailto:sage [2016/05/20(金) 22:51:15.37 ID:RvnBIaae0.net]
>>985
オブジェクト指向であることとか「刻む」ことの意義と
インナークラスにすることがあまり結びつかないなあ。
内側のクラスの存在が外側から完全に隠れる以外の効果あったっけ?

1015 名前:デフォルトの名無しさん (ワッチョイ bd6c-dqc0) mailto:sage [2016/05/20(金) 22:53:44.87 ID:BayA8c/P0.net]
内側クラスは外側クラスのプライベートにアクセスできる

1016 名前:デフォルトの名無しさん (ブーイモ MM28-MTTD) mailto:sage [2016/05/20(金) 22:56:32.97 ID:4DucW+JdM.net]
>>984
マクロやstaticメンバを使った汚い手から一時的な処理用のクラスを作るなどまで想像してましたが、どのみち一手間かかるので必要性次第でしょうね(Innerのメソッドが多くてそうでもしないと…とか)

結局それほどケチる必要がなくてコンストラクタで渡すので十分な予感

本当にポインタ1個分が問題になるような細かいInnerClassを多数作るようなケースなら、このアドレスの範囲にあるInnerのオブジェクトはどのOuterに対応する、という表が作れると検索時間と引き替えにメモリを節約できたり

1017 名前:デフォルトの名無しさん (ブーイモ MM28-MTTD) mailto:sage [2016/05/20(金) 23:07:25.77 ID:4DucW+JdM.net]
>>985
最近追加されたラムダですらどのようにキャプチャするかを細かく指定しなければならない言語だということを理解した方がいいと思う
今後そういう機能が追加されるかどうかはしらないけど、されたらいいね

1018 名前:デフォルトの名無しさん (ワッチョイ bc42-MTTD) mailto:sage [2016/05/20(金) 23:17:26.67 ID:soKi6pqK0.net]
innerクラスなんて完全なアンチパターンだろ
馬鹿じゃねーの

1019 名前:デフォルトの名無しさん (ワッチョイ 7b5b-xKv1) mailto:sage [2016/05/20(金) 23:24:48.47 ID:gU7EupTq0.net]
>>988
インナーにするのは、DotはLifeGameでしか使わないからです。(他から見える必要がない)
オブジェクト指向にするのは、多分制御が簡単になりそうだからなのと、
その際に記述が抽象階層で分離でき、見やすくなると予想されるからです。


もっと良い例がありました。「文書内の不完全マッチによる最有力候補探索」です。
これはほぼやりたいことと同じです。

例えばテキスト文書があったとして、「あいうえおかきくけこ」を探索するとします。
ここで、そのまま「あいうえおかきくけこ」があれば100点、それを示して終わりです。
これがない場合、欠け方それぞれで得点付けし、とにかく一番得点が高い候補を一つ出します。
(例えば「あ」がないのなら-20点とか、「う」が抜けているのなら-10点とか)
実際は多分100〜200字同士のマッチングと等価で、完全一致は期待できないため、
Dotに分枝の作成まで含めてlife_exeさせます。
結果、LifeGameからは「やっとけ。」だけで済み、詳細な実行ルーチンはDot側に集約されます。
といってもこれは分離されるだけで、どちらに書くかの違いだけなのですが、
それでも後々効いてきます

1020 名前:フで、Dot側に集約できる部分は集約しておきたいのです。

Dotは分枝の作成時に自分自身からforkする感じで、たぶんかなり増えます。
ただし親は一つなので、ここの部分は勿体ないかな、という感じでした。
(問題になるほど増えないとは思います)
life_exe内には親のmapへのアクセスは大量に存在しますが、
life_exeはDot内で自走するので、引数として親ポインタを渡すことは出来ません。
従って、親ポインタはコンストラクタでメンバ変数として確保することになります。
コンストラクタで親ポインタを渡すのは、記述的には全く問題ないです。

(最初にもらった親ポインタを大事に抱えて再帰しまくることも出来ますが、、、)
[]
[ここ壊れてます]

1021 名前:デフォルトの名無しさん (ワッチョイ b0ab-/fHo) [2016/05/20(金) 23:24:55.51 ID:G62tMzQY0.net]
馬鹿じゃねーよ
おまえ以外は

1022 名前:デフォルトの名無しさん (ワッチョイ 7b5b-xKv1) mailto:sage [2016/05/20(金) 23:52:28.35 ID:gU7EupTq0.net]
>>991
> 最近追加されたラムダですら
見てみましたが、確かにこのラムダはちょっと見にくいですし、使いにくいですね。
元はといえばC++には関数内関数が無い為、レキシカルスコープ(※)を導入できず、
ラムダのうまみも少し欠けている気がします。
(※一つずつ上の階層を探して名前が一致したらそれと見なす)
g++では既に拡張が行われていると聞きましたが、先に関数内関数が欲しかったですね。

とはいえ、回答して頂いた皆様、ありがとうございました。

1023 名前:デフォルトの名無しさん (ブーイモ MM28-MTTD) mailto:sage [2016/05/21(土) 00:00:28.24 ID:z244ST7/M.net]
>>995
使いにくいのにはそれなりの理由があって、それを理解しましょうねという話
その上で適切な言語を選びましょう



1024 名前:デフォルトの名無しさん (ワッチョイ 9102-xKv1) mailto:sage [2016/05/21(土) 00:01:00.93 ID:EJBeUkkD0.net]
動けば良いんだよ

1025 名前:デフォルトの名無しさん (ワッチョイ caa6-xKv1) mailto:sage [2016/05/21(土) 00:27:26.30 ID:jGVAnHGn0.net]
>>995
よくわかんないけど、名前が一致した「それ」は型が揃っているのかな?
一致してる度合いに微妙に差があるのでは?

1026 名前:デフォルトの名無しさん (ワッチョイ bc7b-xKv1) mailto:sage [2016/05/21(土) 00:56:40.25 ID:Uqmc4lbY0.net]
>>983
宇宙物理のシミュレーションだと万有引力定数が1になるような単位系で計算する

1027 名前:デフォルトの名無しさん (ワッチョイ caa6-xKv1) mailto:sage [2016/05/21(土) 01:08:07.17 ID:jGVAnHGn0.net]
外部からはOuter::Innerはautoでしか受けられない型か

1028 名前:デフォルトの名無しさん (ワッチョイ 7b5b-xKv1) mailto:sage [2016/05/21(土) 01:23:16.26 ID:HBQ7d37R0.net]
次スレ
C++相談室 part125
echo.2ch.net/test/read.cgi/tech/1463761261/

1029 名前:デフォルトの名無しさん (ワッチョイ 7b5b-xKv1) mailto:sage [2016/05/21(土) 01:29:43.83 ID:HBQ7d37R0.net]
>>998
自分がイメージしたのはJavaScriptで、あの言語はnamespaceがないので関数内関数がデフォ、
そして型がないので名前さえ一致すればそこで決まりですね。
ラムダで数階層上の変数を掴みに行くこともよくあります。

C++はnamespaceで細かく切れということなのでしょうが、
やはりユーザの意志で階層が切れないのは使いにくいですね。
C++のインナークラスはメリットがないといえばそうですが、JavaScriptだとインナークラスがデフォです。
(外に見せる必要がなければインナークラス)
これに関しては「余分な物は見せない」というJavaScriptの方がプログラミングとしては正しいと思われます。

ただ、ラムダはGCヒープならほぼ問題ありませんが、スタックが基本のC/C++だと実装も難しいはずで、
C++のラムダは分かりやすくはないけど妥当な仕様の気もしますね。
現実的にはヒープポインタを値キャプチャでラムダでしょうし、この仕様で実害はありません。
スタック変数をラムダで参照キャプチャは使い方として不自然ですし。
それでもやりたければ出来るところがC++っぽいですが。

1030 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
life time: 48日 1時間 7分 19秒

1031 名前:1002 [Over 1000 Thread.net]
2ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 2ちゃんねる専用ブラウザからの広告除去
★ 2ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
premium.2ch.net/
pink-chan-store.myshopify.com/


1032 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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