次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。
前スレ
C++相談室 part132
http://mevius.5ch.net/test/read.cgi/tech/1507561894/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.102【環境依存OK】
http://mevius.5ch.net/test/read.cgi/tech/1509780815/
■長いソースを貼るときはここへ。■
http://codepad.org/
https://ideone.com/
[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
C++相談室 part133
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 1fcf-H1rY)
2017/11/24(金) 16:52:50.43ID:WoNXR2ax0502デフォルトの名無しさん (ワッチョイ 9780-yV1O)
2017/12/12(火) 22:30:05.03ID:taGmyuVj0503デフォルトの名無しさん (ワッチョイ 9fb3-45bT)
2017/12/12(火) 22:32:20.45ID:Vo2kP02L0504デフォルトの名無しさん (ワッチョイ 1f7e-qmOZ)
2017/12/12(火) 22:32:51.93ID:L7nvt31i0 C#のプロパティはカプセル化の範疇を超えた使い方する奴が出てきてからクソだと思い始めた
505デフォルトの名無しさん (ワッチョイ 579f-F7Qh)
2017/12/12(火) 22:43:30.63ID:4svaTAZj0 >>504
可能であれば例よろしく。URLでいい。
可能であれば例よろしく。URLでいい。
506はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-qmOZ)
2017/12/12(火) 22:44:50.18ID:DNRoqyK/0 いや、どんな機能もクソな使い方をする奴は少なからずいるよ。
そんなもんだよ。
そんなもんだよ。
507デフォルトの名無しさん (ワッチョイ 5704-IpD3)
2017/12/12(火) 22:48:51.09ID:qpuoD4bc0 C言語にバックポートしてほしい機能はテンプレート一択。
何を言っているのかわからないと思うが。。。
何を言っているのかわからないと思うが。。。
508デフォルトの名無しさん (ワッチョイ 1f7e-qmOZ)
2017/12/12(火) 23:10:28.93ID:L7nvt31i0 >>505
プロパティ便利すぎとか言ってる同僚が書いた200行を超えるゲッターや初回だけ挙動が違うセッターなど
publicな変数も混ざってる環境なため普通の変数だと思ってあっちこっちで参照していたら気づかないうちに激重になっていた
どこがボトルネックになっているのか探すのに時間がかかった
プロパティ便利すぎとか言ってる同僚が書いた200行を超えるゲッターや初回だけ挙動が違うセッターなど
publicな変数も混ざってる環境なため普通の変数だと思ってあっちこっちで参照していたら気づかないうちに激重になっていた
どこがボトルネックになっているのか探すのに時間がかかった
509デフォルトの名無しさん (スププ Sdbf-dpgO)
2017/12/12(火) 23:13:23.41ID:5Fm7w0SJd 仮にもc++使いならばそんなアホみたいな事例を気にする必要はなかろう
510デフォルトの名無しさん (ワッチョイ 579f-F7Qh)
2017/12/12(火) 23:43:37.47ID:4svaTAZj0 >>508
サンクス。
> どこがボトルネックになっているのか探すのに時間がかかった
多分これがC++がプロパティを入れない理由だと俺は思っているが、
今のC++の勢いならどうせいつか入れるのだろうとも思っている。
> 200行を超えるゲッター
これはあまり行儀はよくないが、
メソッドとフィールドの文法的区別をなくすのがgetterでもあるから、
正しいといえば正しい。
> 初回だけ挙動が違うセッター
これはコンストラクタでやるべきものをセッターに持って来たことが悪い。
つまり、セッターの問題ではない。
セッター文法がこれを誘発するかと言えば、関係ないと思うから、プログラマその人の問題だと思う。
で、C++は一応「プログラマは正しくプログラミングできる」という前提だから、
どうせプロパティもいつか入れるんでしょ、と思っている。
その時には、「getterには重い処理を入れない」等の掟が出来るのだと思う。
サンクス。
> どこがボトルネックになっているのか探すのに時間がかかった
多分これがC++がプロパティを入れない理由だと俺は思っているが、
今のC++の勢いならどうせいつか入れるのだろうとも思っている。
> 200行を超えるゲッター
これはあまり行儀はよくないが、
メソッドとフィールドの文法的区別をなくすのがgetterでもあるから、
正しいといえば正しい。
> 初回だけ挙動が違うセッター
これはコンストラクタでやるべきものをセッターに持って来たことが悪い。
つまり、セッターの問題ではない。
セッター文法がこれを誘発するかと言えば、関係ないと思うから、プログラマその人の問題だと思う。
で、C++は一応「プログラマは正しくプログラミングできる」という前提だから、
どうせプロパティもいつか入れるんでしょ、と思っている。
その時には、「getterには重い処理を入れない」等の掟が出来るのだと思う。
511デフォルトの名無しさん (ワッチョイ 9f12-F7Qh)
2017/12/13(水) 00:53:04.54ID:3t1TagYk0 =での演算子のオーバーロードがsetterに相当する
その辺りを自動でやってほしい
他、+=やらの演算子も余りにも面倒なのでどうにかしてほしい
pythonではそういう軟弱な特殊メソッドがあるが軟弱なのでC++の感触には合わない
さらに困難で不可解な記述方法を編み出すべきだ
その辺りを自動でやってほしい
他、+=やらの演算子も余りにも面倒なのでどうにかしてほしい
pythonではそういう軟弱な特殊メソッドがあるが軟弱なのでC++の感触には合わない
さらに困難で不可解な記述方法を編み出すべきだ
512デフォルトの名無しさん (ワッチョイ 5704-IpD3)
2017/12/13(水) 00:56:28.78ID:SIeP7pZg0 どういうポリシーだよ。
513デフォルトの名無しさん (ワッチョイ 57b3-wlc6)
2017/12/13(水) 01:04:25.30ID:VGyxWnO70 C#についてはサッパリだけど、調べたらかなり便利そうな機能だね、処理を差し挟めるというか?
C++で「stringのように振る舞う値」を作ろうとするとまずその型から定義しなきゃならないし
継承でやっつけることも可能だけど、問題点もある
さらに「intのように振る舞う値」となると継承不可だし、各種演算子をいちいち定義しないといけない
型を定義したいわけじゃなく、ある型のインターフェースを持ちつつアクセス時の処理を入れたいだけ、ってのは
確かにC++にも欲しくなるね
大した例えじゃないと思うけど、いずれ似たようなことが出来るようになったらいいなぁ
C++で「stringのように振る舞う値」を作ろうとするとまずその型から定義しなきゃならないし
継承でやっつけることも可能だけど、問題点もある
さらに「intのように振る舞う値」となると継承不可だし、各種演算子をいちいち定義しないといけない
型を定義したいわけじゃなく、ある型のインターフェースを持ちつつアクセス時の処理を入れたいだけ、ってのは
確かにC++にも欲しくなるね
大した例えじゃないと思うけど、いずれ似たようなことが出来るようになったらいいなぁ
514デフォルトの名無しさん (ワッチョイ 5704-IpD3)
2017/12/13(水) 01:07:04.42ID:SIeP7pZg0 プロパティって要するに、セッターは1引数の関数って場合が多いような。ゲッターは引数無しの関数。
カッコつけないだけで可読性がそこまで上がるもんかと思う。
カッコつけないだけで可読性がそこまで上がるもんかと思う。
515デフォルトの名無しさん (ワッチョイ 77c3-Jck7)
2017/12/13(水) 01:13:16.30ID:YFiH9SDO0 window.SetSize(display.GetSize() * 0.5);
よりは
window.size = display.size * 0.5;
の方が読みやすいとは思う
よりは
window.size = display.size * 0.5;
の方が読みやすいとは思う
516デフォルトの名無しさん (ワッチョイ 5704-IpD3)
2017/12/13(水) 01:21:21.53ID:SIeP7pZg0 んー。まぁそうかも。
517デフォルトの名無しさん (ワッチョイ 1f7e-qmOZ)
2017/12/13(水) 02:17:03.25ID:65/6bu6P0 ゲッターのポインタをどうやって取るつもりだよ
518デフォルトの名無しさん (ワッチョイ 5704-IpD3)
2017/12/13(水) 02:38:27.29ID:SIeP7pZg0 なぜそんな使い方をするのかよくわからん。
参照でパクってくるのはできないの?
参照でパクってくるのはできないの?
519デフォルトの名無しさん (ワッチョイ 5704-IpD3)
2017/12/13(水) 02:39:20.43ID:SIeP7pZg0 あー、あーるばりゅーに&つけるのってダメなんだっけ?
520デフォルトの名無しさん (ワッチョイ 9f34-Xhpf)
2017/12/13(水) 02:47:06.16ID:4G0mfW720 そうそう、汚物感が皆無なのよねえ
521デフォルトの名無しさん (スププ Sdbf-LVSJ)
2017/12/13(水) 04:41:15.27ID:pnzC2QZad522デフォルトの名無しさん (ワッチョイ 9fb3-45bT)
2017/12/13(水) 04:58:13.06ID:0JTwiv230523デフォルトの名無しさん (ワッチョイ ffb4-Nf6k)
2017/12/13(水) 05:38:19.00ID:qfWT6RzB0 ここで議論してる人って、↓の話は当然理解してるんだよね。
http://ufcpp.net/study/miscprog/accessor.html#proxy
http://ufcpp.net/study/miscprog/accessor.html#proxy
524デフォルトの名無しさん (ドコグロ MMdf-45bT)
2017/12/13(水) 06:53:58.70ID:55R6yVv7M525デフォルトの名無しさん (ワッチョイ 5704-IpD3)
2017/12/13(水) 07:47:58.27ID:SIeP7pZg0 https://ideone.com/x4WLWF
これを見てくれ、こいつをどう思う?
大分前にここにも上げたやつ。
こういうこともできなくないけど、標準で持ってほしいのはわからんでもない。
まぁ、カッコ一個減ったくらいでそんなに変わるかどうかはビミョーなところ。
これを見てくれ、こいつをどう思う?
大分前にここにも上げたやつ。
こういうこともできなくないけど、標準で持ってほしいのはわからんでもない。
まぁ、カッコ一個減ったくらいでそんなに変わるかどうかはビミョーなところ。
526デフォルトの名無しさん (ワッチョイ ff81-WAMQ)
2017/12/13(水) 07:51:32.20ID:DfK3Pc7X0 >>502
Storedとも違う
Storedとも違う
527デフォルトの名無しさん (ワッチョイ 57b3-wlc6)
2017/12/13(水) 13:46:22.45ID:VGyxWnO70 >>525
プロパティっぽいことは実現できてると思うんだけど、
いかんせん型が違うから、例えばstringのメンバ関数呼び出しは出来ないし
暗黙のキャストが効かない場面でエラーになるんじゃないかな
やっぱ言語でサポートしてくれないと限度がある
と思ったけどT.P + T.Pとかが通って吹いた
プロパティっぽいことは実現できてると思うんだけど、
いかんせん型が違うから、例えばstringのメンバ関数呼び出しは出来ないし
暗黙のキャストが効かない場面でエラーになるんじゃないかな
やっぱ言語でサポートしてくれないと限度がある
と思ったけどT.P + T.Pとかが通って吹いた
528デフォルトの名無しさん (ワッチョイ 9f6e-MWkS)
2017/12/13(水) 13:59:38.92ID:VOF5ieE50 リファレンサなんか大昔からみんなやってることじゃん
誰かがいみじくも言っていたようにカッコ1つ減らすためだけに
そんな馬鹿げた努力(言語の複雑化も含む)がしたいのか
誰かがいみじくも言っていたようにカッコ1つ減らすためだけに
そんな馬鹿げた努力(言語の複雑化も含む)がしたいのか
529デフォルトの名無しさん (ガックシ 068f-dpgO)
2017/12/13(水) 15:06:44.35ID:QqhuUsRS6 努力はしたくないけど言語の複雑化は構わんなあ
もっと複雑な機能いっぱいあるし、プロパティなんてかわいいもんでしょ
もっと複雑な機能いっぱいあるし、プロパティなんてかわいいもんでしょ
530デフォルトの名無しさん (ワッチョイ 57b3-wlc6)
2017/12/13(水) 15:21:57.42ID:VGyxWnO70531デフォルトの名無しさん (ワッチョイ 9f6e-MWkS)
2017/12/13(水) 16:32:25.04ID:VOF5ieE50532デフォルトの名無しさん (ワッチョイ 17b3-qmOZ)
2017/12/13(水) 19:43:44.26ID:YreXArfE0 [][][] [][][] [] [][][][] [][] [][][][][] [][] [][] [] [][][][][]
[] [][][][ [][][][][] [][ [][] [] [][][] [] [][][] []
[][][][] [] [] [][][][][][ [] [][][] [][] [][] []
[] [][][][ [][][][][] [][ [][] [] [][][] [] [][][] []
[][][][] [] [] [][][][][][ [] [][][] [][] [][] []
533デフォルトの名無しさん (ワッチョイ 5704-IpD3)
2017/12/13(水) 20:46:34.93ID:SIeP7pZg0 >>527
えー?stringのメンバ呼べない?const参照してるだけだから呼べない道理はないはずだけど。
まぁ、マズそうなら一回static_castかませないとダメなんだっけ?うーむ。
まぁ、難しいことは考えずサンプルとして見てくれ。
えー?stringのメンバ呼べない?const参照してるだけだから呼べない道理はないはずだけど。
まぁ、マズそうなら一回static_castかませないとダメなんだっけ?うーむ。
まぁ、難しいことは考えずサンプルとして見てくれ。
534デフォルトの名無しさん (ドコグロ MM4b-45bT)
2017/12/13(水) 21:13:48.92ID:S9dgblRYM535デフォルトの名無しさん (ワッチョイ 57b3-wlc6)
2017/12/13(水) 21:31:45.92ID:VGyxWnO70 >>533
Test<std::string> T;
size_t a = T.P.size();
とかやった場合の話ね(もちろん明示・暗黙に関わらずキャストされたらいける
継承使えばメンバ関数もいけるだろうけど・・・・そうすると多分、スライシング等の問題が・・・・
そんなこんなでプロパティか、それに近い機能入ってもいんじゃね?と思っただけw
Test<std::string> T;
size_t a = T.P.size();
とかやった場合の話ね(もちろん明示・暗黙に関わらずキャストされたらいける
継承使えばメンバ関数もいけるだろうけど・・・・そうすると多分、スライシング等の問題が・・・・
そんなこんなでプロパティか、それに近い機能入ってもいんじゃね?と思っただけw
536デフォルトの名無しさん (ワッチョイ 5704-IpD3)
2017/12/13(水) 21:44:08.48ID:SIeP7pZg0537デフォルトの名無しさん (ワッチョイ 579f-F7Qh)
2017/12/13(水) 22:11:05.97ID:uoR9h+SG0 つかな、使ってもないのに使用感を予想で語るの止めい。
そりゃ話がループする。
他言語には普通にあるんだし、使ってる奴のレポートを待てばいいんだよ。
利点は、フィールド←→メソッドを変更するときに、記述変更が少なくて済むことだ。
場合によっては戻すこともあるから、その時も助かる。
従って、アジャイルで既に動いているコードを変更しまくるときには便利だが、
ウォーターフォールで基本書いて終わりなら大してメリットはない。()が付くだけだ。
これとは別に、JavaScriptの場合はフィールドとメソッドを区別してないので、オーバーヘッド無しの遅延評価にも使える。
(プロパティ《関数ポインタ、ここで遅延評価する》をフィールド《遅延評価の結果》で直接上書きできる)
C++でこれをやる場合、オーバーヘッドが生じるし、そもそもメソッドコールでいい。
結果、C++には記述上のメリットしかなく、
これはIDEが進歩してリファクタリング出来るようになれば解消する話でもある。
だからそれを待つ、という作戦もありだろうし、
それ以前にIDE側のプリプロセッサでpropertyをサポートしてしまえ、ってのもありだと思う。
まあ、あれば便利程度で、あまり本質的ではない機能なのも事実だ。
そりゃ話がループする。
他言語には普通にあるんだし、使ってる奴のレポートを待てばいいんだよ。
利点は、フィールド←→メソッドを変更するときに、記述変更が少なくて済むことだ。
場合によっては戻すこともあるから、その時も助かる。
従って、アジャイルで既に動いているコードを変更しまくるときには便利だが、
ウォーターフォールで基本書いて終わりなら大してメリットはない。()が付くだけだ。
これとは別に、JavaScriptの場合はフィールドとメソッドを区別してないので、オーバーヘッド無しの遅延評価にも使える。
(プロパティ《関数ポインタ、ここで遅延評価する》をフィールド《遅延評価の結果》で直接上書きできる)
C++でこれをやる場合、オーバーヘッドが生じるし、そもそもメソッドコールでいい。
結果、C++には記述上のメリットしかなく、
これはIDEが進歩してリファクタリング出来るようになれば解消する話でもある。
だからそれを待つ、という作戦もありだろうし、
それ以前にIDE側のプリプロセッサでpropertyをサポートしてしまえ、ってのもありだと思う。
まあ、あれば便利程度で、あまり本質的ではない機能なのも事実だ。
538デフォルトの名無しさん (ワッチョイ 1234-lyuv)
2017/12/14(木) 00:16:08.20ID:Sy/1Y7rD0 お前がそう思うならそうなんだろう
お前の頭の中ではな
貴様の意見も机上の空論でしかない
お前の頭の中ではな
貴様の意見も机上の空論でしかない
539デフォルトの名無しさん (ワッチョイ 1f04-j1NZ)
2017/12/14(木) 00:18:30.33ID:NkgoJhJp0 そんなにつぶし合いしたいかね。
収集しようとしてるのに。
収集しようとしてるのに。
540デフォルトの名無しさん (ワッチョイ 926e-zS+j)
2017/12/14(木) 05:16:24.25ID:fPDEs5uN0541デフォルトの名無しさん (ドコグロ MM32-jdna)
2017/12/14(木) 06:45:49.20ID:TMq/DGv/M >>537
なぜ爺は終わった話をクドクド繰り返すのか
なぜ爺は終わった話をクドクド繰り返すのか
542デフォルトの名無しさん (ワッチョイ dee7-c48R)
2017/12/14(木) 08:20:19.27ID:pBHCaQE50 c++でIF公開するときはメソッドに統一する、でおしまいの話なのにな。
543デフォルトの名無しさん (ワッチョイ de9f-X0LG)
2017/12/14(木) 09:02:11.18ID:pZXI1dL80 文句だらだらなら、GCCを自分で仕様を追加しちゃえよ!
544デフォルトの名無しさん (ワッチョイ 926e-zS+j)
2017/12/14(木) 09:19:33.65ID:fPDEs5uN0 かつて禿がcfrontを作ったようにか
545デフォルトの名無しさん (スププ Sd32-gSDb)
2017/12/14(木) 09:28:38.36ID:GokG4kFPd 自分で仕様を追加したGCCとか>>540のマクロとたいして変わらんくない?
いや公式GCCにアクセプトされるなら話は別だけど
いや公式GCCにアクセプトされるなら話は別だけど
546デフォルトの名無しさん (ワッチョイ 926e-zS+j)
2017/12/14(木) 09:38:06.70ID:fPDEs5uN0 追加する仕様によるな
禿がCに「追加した」機能はマクロじゃ済まない
禿がCに「追加した」機能はマクロじゃ済まない
547デフォルトの名無しさん (スプッッ Sd97-xd0q)
2017/12/14(木) 16:58:09.71ID:WeKtNL6id そんなにプロパティ欲しいとは思わんが、単純な値操作ならメンバの参照返すメソッド作れば事足りるんじゃね?
それよりconst地獄ってホントにあるの?
const使いまくってて体感したことないんだけと。
それよりconst地獄ってホントにあるの?
const使いまくってて体感したことないんだけと。
548デフォルトの名無しさん (ワッチョイ 926e-zS+j)
2017/12/14(木) 17:04:38.91ID:fPDEs5uN0 メンバの参照を返したらprivateにしている意味が完全に失われるぞ
>>547
上流が const を渡してきたら、下流は逆らえない、ってことでは?
上流が const を渡してきたら、下流は逆らえない、ってことでは?
550デフォルトの名無しさん (ワッチョイ 9ee7-iA8U)
2017/12/14(木) 19:25:05.92ID:xcUKDly80 自作クラスのメンバ関数にconst全く付けてないタコが聞きかじりで中途半端に付け始めて
「メソッド呼べない!ムキー!このconstってやつ使えねー」ってパターンが大半だと思ってる
「メソッド呼べない!ムキー!このconstってやつ使えねー」ってパターンが大半だと思ってる
551デフォルトの名無しさん (ワッチョイ 1f7f-mLIQ)
2017/12/14(木) 19:27:31.22ID:gH71C6kZ0 const地獄になるってことはそのコードが間違ってるって事だからな
全部直せ
全部直せ
552デフォルトの名無しさん (スップ Sd52-JSy5)
2017/12/14(木) 20:46:09.64ID:j4kcZFN2d >>547
本気で言ってるなら、それは経験が足りない
本気で言ってるなら、それは経験が足りない
553デフォルトの名無しさん (ワッチョイ c27e-mLIQ)
2017/12/14(木) 20:54:50.42ID:5ihghoP20 副作用の少ないきれいな設計ならconstだらけになるはずだが
554デフォルトの名無しさん (ワッチョイ 1681-J6jR)
2017/12/14(木) 20:59:02.63ID:tSRk6cie0 >>553
これ
これ
555デフォルトの名無しさん (ワッチョイ dfb3-hRZ1)
2017/12/14(木) 21:01:34.68ID:jk+byjKr0 No.1
1 2 3 4 5
2 3 4 5 6
No.2
1 2 3 4 5
2 2 2 2 2
3 3 3 3 3
No.3
3 4 5 6 7
:
:
No.n
というtxtファイルがあり。No.〇の次の行に整数が記入されている(何行あるかわからない)
整数の左からx1[ i ][ k ]、y1[ i ][ k ]、x2[ i ][ k ]、y2[ i ][ k ]、A[ i ][ k ]の配列にそれぞれ書き込み
もし次の行整数があればi+1をしまたそれぞれの配列に整数を書き込む
もし次の行に整数がなければ(No.の行)k+1を次の行にいき整数をそれぞれの配列に書き込む。
これをNo.nまで繰り返す。
このプログラムをfopenを使ってプログラムどなたかつくってくれませんかー?
1 2 3 4 5
2 3 4 5 6
No.2
1 2 3 4 5
2 2 2 2 2
3 3 3 3 3
No.3
3 4 5 6 7
:
:
No.n
というtxtファイルがあり。No.〇の次の行に整数が記入されている(何行あるかわからない)
整数の左からx1[ i ][ k ]、y1[ i ][ k ]、x2[ i ][ k ]、y2[ i ][ k ]、A[ i ][ k ]の配列にそれぞれ書き込み
もし次の行整数があればi+1をしまたそれぞれの配列に整数を書き込む
もし次の行に整数がなければ(No.の行)k+1を次の行にいき整数をそれぞれの配列に書き込む。
これをNo.nまで繰り返す。
このプログラムをfopenを使ってプログラムどなたかつくってくれませんかー?
556デフォルトの名無しさん (ワッチョイ 1234-lyuv)
2017/12/14(木) 21:33:16.59ID:x8KqPZST0 宿題くらい自力でこなせ脳筋
557デフォルトの名無しさん (ワッチョイ 1f04-j1NZ)
2017/12/14(木) 21:45:38.41ID:NkgoJhJp0 ヒント。
いずあるふぁっていう関数どっかにあるから、先頭にアルファベットがあったらスキップや。
それと宿題スレって落ちたの?
いずあるふぁっていう関数どっかにあるから、先頭にアルファベットがあったらスキップや。
それと宿題スレって落ちたの?
559デフォルトの名無しさん (ワッチョイ 12e7-X0LG)
2017/12/15(金) 00:18:39.45ID:sms7d93l0 const指定って下流が対応してないのに上流からやり始めるのは愚だよね
560デフォルトの名無しさん (ワッチョイ 92a6-ak+6)
2017/12/15(金) 09:14:14.38ID:2/eH7rfa0 >>559
どういう意味?
どういう意味?
561デフォルトの名無しさん (ドコグロ MMea-c48R)
2017/12/15(金) 11:53:03.91ID:H37RU5hVM プロパティよりも、deleteするとコンパイルエラーになるポインタが欲しい。
562デフォルトの名無しさん (ワッチョイ 926e-zS+j)
2017/12/15(金) 11:55:37.18ID:GBd6F7vt0563デフォルトの名無しさん (ワッチョイ c27e-mLIQ)
2017/12/15(金) 12:49:17.55ID:kmVVqq510 >>561
あるじゃん
あるじゃん
564デフォルトの名無しさん (ドコグロ MMea-c48R)
2017/12/15(金) 15:39:48.05ID:H37RU5hVM >>562
int*に代入できたっけ?
int*に代入できたっけ?
565デフォルトの名無しさん (ワッチョイ 926e-zS+j)
2017/12/15(金) 16:14:46.51ID:GBd6F7vt0 >>564
後出しはきたねえよ
後出しはきたねえよ
566デフォルトの名無しさん (ドコグロ MMea-c48R)
2017/12/15(金) 18:44:29.20ID:H37RU5hVM スマポも「ポインタ」とは言うけどさぁ
deleteの文脈で言っているんだから、オブジェクトは想定外だわ。
deleteの文脈で言っているんだから、オブジェクトは想定外だわ。
567デフォルトの名無しさん (ワンミングク MM42-B5ak)
2017/12/15(金) 18:52:20.56ID:6JtV0wHMM そんなもん何の役にたつのか解らんわ
568デフォルトの名無しさん (ワッチョイ 9ee7-iA8U)
2017/12/16(土) 06:47:52.76ID:7q5uIVqU0 所有権のないスマポ(?)ならstd::observer_ptrがもうすぐ入るから待っとけ
569デフォルトの名無しさん (ワッチョイ 9ee7-iA8U)
2017/12/16(土) 06:55:04.26ID:7q5uIVqU0 ところでスマポのコンストラクタの書き方ってどっちがいいの?
class Foo
{
std::shared_ptr<Bar> bar;
Foo(): bar(new Bar(42, 100.5, "xxx")){}
Foo(): bar(std::make_shared<Bar>(42, 100.5, "xxx")){}
};
下の書き方されてるのよく見るけどこれって
「newがあるのにdeleteがない!111」って発狂するアホコードチェッカを黙らせる以外にメリットなんかあるの?
class Foo
{
std::shared_ptr<Bar> bar;
Foo(): bar(new Bar(42, 100.5, "xxx")){}
Foo(): bar(std::make_shared<Bar>(42, 100.5, "xxx")){}
};
下の書き方されてるのよく見るけどこれって
「newがあるのにdeleteがない!111」って発狂するアホコードチェッカを黙らせる以外にメリットなんかあるの?
570デフォルトの名無しさん (ワッチョイ d6fa-+wuU)
2017/12/16(土) 07:12:04.23ID:WjCT6x4J0571デフォルトの名無しさん (ワッチョイ 9ee7-iA8U)
2017/12/16(土) 07:21:37.50ID:7q5uIVqU0 あーなるほど
new隠しだけのための砂糖だと思ってましたありがとう
ということはunique_ptrの場合はメリットなしでいいんですかね
new隠しだけのための砂糖だと思ってましたありがとう
ということはunique_ptrの場合はメリットなしでいいんですかね
572デフォルトの名無しさん (ワッチョイ ff78-H+11)
2017/12/16(土) 07:29:56.22ID:O0/bhlaM0 俺もmake_uniqueはいらねーよなぁって思ってたけど使った方が例外安全なんだとよ
573デフォルトの名無しさん (ワッチョイ 1f7f-mLIQ)
2017/12/16(土) 09:33:48.78ID:RDTsLSUc0 むしろmake_uniqueが11に無くてキレた
574デフォルトの名無しさん (ワッチョイ a7b3-mLIQ)
2017/12/16(土) 22:08:09.44ID:d76HZF+i0 point cloud libraryというライブラリを読んでいます。
kdtreeクラスはsearchクラスをパブリック継承しており、
kdtreeクラスの冒頭で、searchクラスのデータメンバやメンバ関数の一部をusingしています。
これはどういう意味があってやっているのか教えて頂けないでしょうか。
kdtreeクラスはsearchクラスをパブリック継承しており、
kdtreeクラスの冒頭で、searchクラスのデータメンバやメンバ関数の一部をusingしています。
これはどういう意味があってやっているのか教えて頂けないでしょうか。
575デフォルトの名無しさん (ワッチョイ 1f04-j1NZ)
2017/12/17(日) 10:02:55.57ID:E0u1MAW90 IO2D楽しみだなー。
ウニファイドコールシンタックス復活しないかなぁ。
ウニファイドコールシンタックス復活しないかなぁ。
576デフォルトの名無しさん (ワッチョイ ef04-RjCm)
2017/12/17(日) 18:17:59.07ID:4ntht7mR0 質問です。
#include "classB.h"
class A{
private:
B* b;
public:
void set(B* b){this->b=b;}
B* get(){return b;}
};
クラスAのメンバーにクラスBのポインタとアクセサがあります。
しかし、set()を使わずに、get()を使ってメンバーにアクセスできてしまいます。
例:a->get()=b;
ポインタではなく、複製したインスタンスを返すことも考えたのですが
クラスBのサイズが非常に大きいため、
可能であれば複製はしたくありません。
どうかご助力をお願い致します。
#include "classB.h"
class A{
private:
B* b;
public:
void set(B* b){this->b=b;}
B* get(){return b;}
};
クラスAのメンバーにクラスBのポインタとアクセサがあります。
しかし、set()を使わずに、get()を使ってメンバーにアクセスできてしまいます。
例:a->get()=b;
ポインタではなく、複製したインスタンスを返すことも考えたのですが
クラスBのサイズが非常に大きいため、
可能であれば複製はしたくありません。
どうかご助力をお願い致します。
577デフォルトの名無しさん (ワッチョイ 1234-lyuv)
2017/12/17(日) 18:32:55.64ID:bOEVzYTT0 const B *get() const {略}
578デフォルトの名無しさん (ワッチョイ 52a2-mLIQ)
2017/12/17(日) 18:33:44.11ID:+uUy0Dc30 get()を消す
579デフォルトの名無しさん (ワッチョイ ff78-H+11)
2017/12/17(日) 18:37:56.02ID:iUXjeeD00 B* b = nullptr;
B* get(){ assert(b != nullptr); return b;}
こうでもしとけばいいよ
B* get(){ assert(b != nullptr); return b;}
こうでもしとけばいいよ
580デフォルトの名無しさん (ワッチョイ c27e-mLIQ)
2017/12/17(日) 18:39:29.53ID:UdjbeEad0581デフォルトの名無しさん (ワッチョイ 1234-lyuv)
2017/12/17(日) 18:41:17.67ID:bOEVzYTT0 エスパーだがポインタみたいな動作させたいなら operatorー>() を定義すりゃいいけど上の説明だとなにがやりたいのか具体的にわからないね
582デフォルトの名無しさん (ワッチョイ 12e7-X0LG)
2017/12/17(日) 18:48:28.66ID:1SGX9IGl0 >>578に賛成
583デフォルトの名無しさん (ワッチョイ ef04-RjCm)
2017/12/17(日) 18:56:03.60ID:4ntht7mR0584デフォルトの名無しさん (ワッチョイ 9ee7-iA8U)
2017/12/17(日) 19:23:44.84ID:KvIrn8eu0 Bがなんだかわからないけどsetがものすごくまずいように見える
585デフォルトの名無しさん (ワッチョイ a7b3-mLIQ)
2017/12/17(日) 19:40:09.05ID:S5+bbMRX0 [][] [] [][][][] [][] [] [][][][][
[ ][] [
[ ][] [
586デフォルトの名無しさん (ワッチョイ 921b-zGdT)
2017/12/17(日) 20:35:52.39ID:eYk9JmcH0 gtkmmググっても英語含めて17ページしかないんだわ(´・ω・`)
587デフォルトの名無しさん (ワッチョイ 72bd-E651)
2017/12/17(日) 20:39:57.73ID:wJJJkdkz0 オブジェクトの内部データへの変更を許すフリーパスを外に与えるようなsetterやgetterはNG、
しかしあまり杓子定規にそれを言い立てるとファイルハンドルとかもgetterで返して良いかどうかビミョーに…
ファイルはオブジェクトの内部データではないお客様という解釈で乗り切る?
しかしあまり杓子定規にそれを言い立てるとファイルハンドルとかもgetterで返して良いかどうかビミョーに…
ファイルはオブジェクトの内部データではないお客様という解釈で乗り切る?
588デフォルトの名無しさん (ワッチョイ af39-zS+j)
2017/12/17(日) 22:46:35.33ID:AbfI68c80 いいわけないだろ
教条主義にとらわれていると
そういうことがわからなくなる
教条主義にとらわれていると
そういうことがわからなくなる
589はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 1e6f-mLIQ)
2017/12/17(日) 23:31:57.93ID:vupC7usA0 フレンドクラスに見せるようにする方が例外扱いが明記される分だけマシ
590デフォルトの名無しさん (ワッチョイ 12e7-X0LG)
2017/12/17(日) 23:42:11.90ID:1SGX9IGl0 フレンドはカプセル化を推進する良い子
591デフォルトの名無しさん (ワッチョイ 1f04-j1NZ)
2017/12/17(日) 23:55:34.47ID:E0u1MAW90 クラスオブジェクトソリッド
>>295 >>292
accelerated c++ をぼちぼちやっています。
>>295 にもバグがあり、正しくは
https://ideone.com/sK4aJ2
一行を最後まで読んでしまったのなら、即座にループを抜けないといけない
なんだか最近 while() の使い道がなくなってきたように思えるのです…いつも for(::) { break; } ばかり書くようになってしまった…
accelerated c++ をぼちぼちやっています。
>>295 にもバグがあり、正しくは
https://ideone.com/sK4aJ2
一行を最後まで読んでしまったのなら、即座にループを抜けないといけない
なんだか最近 while() の使い道がなくなってきたように思えるのです…いつも for(::) { break; } ばかり書くようになってしまった…
593デフォルトの名無しさん (ワッチョイ 1f04-j1NZ)
2017/12/18(月) 00:12:01.54ID:3Ix8qMew0 停止性を担保するのは良いことだと思うが。
結局無限ループからのブレークしか使ってないなら頭整理してWHILEに置き換えるようにするなぁ。
結局無限ループからのブレークしか使ってないなら頭整理してWHILEに置き換えるようにするなぁ。
>>593
停止性の確認を行った後、余計なことを一切してはいけない、という制約が加わると
途中判定の break 脱出以外に手がない、と考えています
あまり思い出したくないんですが、DOS/Windows の findfirst/findnext なんかも似た類かと
停止性の確認を行った後、余計なことを一切してはいけない、という制約が加わると
途中判定の break 脱出以外に手がない、と考えています
あまり思い出したくないんですが、DOS/Windows の findfirst/findnext なんかも似た類かと
596デフォルトの名無しさん (ワッチョイ d298-Ll2t)
2017/12/18(月) 02:19:29.29ID:+LmA4Igx0 アプリケーション上で確保されたヒープ領域を追跡したいです。
operator new/delete と allocator を弄ればできると思い調査していたころ
「プログラミング言語C++ 第4版」P997 に
「標準ライブラリのすべてのコンテナは、newによってメモリを確保して、deleteによって解放するデフォルトアロケータを(デフォルトで)もっている」
と書かれていました。つまり、new をグローバルでオーバーロードすれば追跡可能です。
実際、手元のコンパイラでは std::vector のメモリ確保と解放を追跡できました。
ここまでの内容は規格で保証されている事柄ですか?
実際のアプリケーションに組込むことを考えています。
operator new/delete と allocator を弄ればできると思い調査していたころ
「プログラミング言語C++ 第4版」P997 に
「標準ライブラリのすべてのコンテナは、newによってメモリを確保して、deleteによって解放するデフォルトアロケータを(デフォルトで)もっている」
と書かれていました。つまり、new をグローバルでオーバーロードすれば追跡可能です。
実際、手元のコンパイラでは std::vector のメモリ確保と解放を追跡できました。
ここまでの内容は規格で保証されている事柄ですか?
実際のアプリケーションに組込むことを考えています。
597デフォルトの名無しさん (ワッチョイ 1f04-j1NZ)
2017/12/18(月) 02:36:31.34ID:3Ix8qMew0 メモリの確保形式はさすがに実装依存でしょ。
最近リーヌスがブチ切れたらしいけど。
メモリーオーダーコンシウムとかの話は今やってるところ。
最近リーヌスがブチ切れたらしいけど。
メモリーオーダーコンシウムとかの話は今やってるところ。
598デフォルトの名無しさん (ワッチョイ b780-AB+M)
2017/12/18(月) 03:43:10.43ID:vrG0ZJDQ0599デフォルトの名無しさん (ワッチョイ 1233-4pIx)
2017/12/18(月) 07:43:59.76ID:dmyIL21e0 >>596
std::allocator<T> (The default allocator) についての [allocator.members] で規定されてる。
> Remarks: the storage is obtained by calling ::operator new, but it is unspecified when or
> how often this function is called.
標準コンテナにアロケータを指定しなければ std::allocator が使われるから、それでいける。
「実際のアプリケーション」に変なものが混ざってなければね。
std::allocator<T> (The default allocator) についての [allocator.members] で規定されてる。
> Remarks: the storage is obtained by calling ::operator new, but it is unspecified when or
> how often this function is called.
標準コンテナにアロケータを指定しなければ std::allocator が使われるから、それでいける。
「実際のアプリケーション」に変なものが混ざってなければね。
600デフォルトの名無しさん (ワッチョイ 1f04-j1NZ)
2017/12/18(月) 07:50:02.22ID:3Ix8qMew0 アロケータ自作してスパイアロケータとか作ればそれっぽいことはできるね。
標準コンテナに限っては。
標準コンテナに限っては。
601デフォルトの名無しさん (ドコグロ MMb3-c48R)
2017/12/18(月) 09:32:57.28ID:MJYUqHBuM >>576
ポインタを返さずに、ハンドルクラスを定義してそのオブジェクトを返す。
ポインタを返さずに、ハンドルクラスを定義してそのオブジェクトを返す。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- アメリカ、入国時に「日本人を含む外国人観光客の最大5年分のSNS履歴の提出」義務化へ 過去10年間に使用のメールアドレスや電話番号等も★2 [Hitzeschleier★]
- 立憲・小宮山議員、「牛乳=白い水」投稿を削除 批判殺到で「大変失礼申し上げました」 [少考さん★]
- 【中国外務省】日本への渡航自粛を再度呼びかけ 今度は「地震発生」を理由に [ぐれ★]
- 日本語が話せない「外国籍」の子が急増中、授業がストップ、教室から脱走も…先生にも大きな負担「日本語支援」追いつかず★3 [七波羅探題★]
- 内閣支持、微減59.9% 5割超が補正予算評価 時事通信世論調査 [どどん★]
- 【芸能】デパートで見つけたランドセルが衝撃価格! つまみ枝豆「どこかで規制しないと」に共感の声殺到 「全て同感」「高すぎます」★2 [冬月記者★]
- 愛国者「コピーという言葉は、文脈によって複数の意味を持ちます。これは事前通告とは言わない。」 [834922174]
- 【高市遺産】 ユネスコさん。日本の「匠の技」「屋台」「和紙」などを無形文化遺産に登録 🎉🎊 [485983549]
- 1時間後に退職を伝える😡
- 日本人のコメ離れが深刻、おまえらなんでコメ食わないんだ??? [974680522]
- 【画像】クリスマスケーキの予約の電話をしたんだけどすでに予約がいっぱいで断られちゃったよ…
- 自民党のヒゲ「トランプおやびんが中国に何も言ってくれない」 [834922174]
