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


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

C++相談室 part134



1 名前:デフォルトの名無しさん mailto:sage [2018/01/20(土) 09:05:42.21 ID:mJKRg6iz0.net]
次スレを立てる時は本文の1行目に以下を追加して下さい。
!extend:on:vvvvv:1000:512

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

前スレ
C++相談室 part133
mevius.5ch.net/test/read.cgi/tech/1511509970/

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

■長いソースを貼るときはここへ。■
 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

655 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 18:48:14.13 ID:uMO7yRavM.net]
>>614
だからわかりきってるかどうかは人によって違うって話
プログラムの前に日本語の勉強しろよ w

656 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 18:48:33.76 ID:2oR7xNCJ0.net]
まぁコスト次第で可読性を犠牲にするケースもあるだろうけど
この場合はメモリ食う訳でも処理遅くなる訳でもソースの構造が変わる訳でもない
86400でも十分分かりやすいかも知れんが60*60*24なら更に分かりやすくなる

どっちが良いかなんて議論の余地無いよね

657 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 18:50:15.11 ID:L/3+Hz1H0.net]
>>631
別にプロでなくてもいいんだけどさ
おまえさんなりに、同じプロジェクトにいて欲しくない足手まといが
どのくらいから下というのはあるだろ

658 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 18:54:56.26 ID:uMO7yRavM.net]
>>626
> 16を2*2*2*2っていちいち書く人はいないでしょ
> まぁ1<<4って書けと言われるかもしれんが
状況次第だろ
場合分けの条件が4個あって各々2状態をとるとかなら2*2*2*2って書くかもしれない
下から4ビット目のマスクが欲しいなら1<<4って書くこともある

659 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 18:58:33.90 ID:2oR7xNCJ0.net]
>>636
ビットフィールド使えば?

660 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 19:09:24.20 ID:L/3+Hz1H0.net]
シフト使うな、ビットフィールドで書け
なんて言われると、俺は相手にもよるが逆らいそう

661 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 19:37:46.29 ID:uMO7yRavM.net]
>>637
ビットフィールドは割り付け順序が処理系定義だったりしたからあまり使ったことがない

662 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 21:26:40.49 ID:kWAHqA+uM.net]
たまには2進リテラルちゃんのことも思い出してあげてください

663 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 06:36:14.64 ID:F+InEeO+0.net]
議論の本筋(1日の秒数として即値で86400と書くことの是非)とはさらに離れるけど、
ビットシフトを使う定数は常にカッコで囲んでくれ。

res = a + 1<<4 + b;
res = a +(1<<4)+ b;



664 名前:デフォルトの名無しさん [2018/03/15(木) 07:15:43.22 .net]
>>641
3つ以上の項があると静的解析ツールで怒られるから
res = (a +(1<<4))+ b;
と書く

665 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 08:58:15.76 ID:x1WHRaDf0.net]
>>641
下のつもりで上書いたらただのバグじゃん

666 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 09:19:10.68 ID:3Ym40JOm0.net]
算術と混用するときは結合順位に注意せよ、というだけのことを
いちいち必ずだ!ルールだ!と金切り声で吠えついてくるやつはウザい

667 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 09:55:31.41 ID:LkpAylTJM.net]
>>642
可読性悪くしてかえって品質低下招きそうな指摘だな

668 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 13:29:47.33 ID:O2sRH7tT0.net]
vectorをつなげる際、copyが良いとか、insertを使えとか色々書いてあるのですが、どれが良いのでしょうか?

669 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 13:54:37.80 ID:XNo6/02A0.net]
あらかじめ領域を広げておく必要があるけどinsertの方がチェックが入らない分速い

670 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 15:23:48.90 ID:9f/t5+6G0.net]
reserveしてinsertだな

671 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 15:36:42.69 ID:q9z+dA6Ga.net]
insertの直前にreserveって意味あるのか?

672 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 16:32:16.09 ID:XNo6/02A0.net]
reserveは終端のポインタが更新されないからresizeじゃないとだめ

673 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 16:57:46.96 ID:R5/WYUtW0.net]
reserveしてback_inserterでcopy



674 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 17:05:27.14 ID:QEAEy0DH0.net]
>>648
insertはサイズチェックしてるでしょ。
>>649
iteratorを2つ受け取るタイプのinsertなら意味あるんじゃね?
>>650
resizeは不味いだろ。

675 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 17:09:09.32 ID:QEAEy0DH0.net]
>>652
アンカしくった。
サイズチェックの指摘は>>647向け

676 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 17:21:30.23 ID:XNo6/02A0.net]
ごめんinsertとcopy逆だった

677 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 17:28:15.72 ID:q9z+dA6Ga.net]
>>652
insertの中で追加数数えてreserveと同じことしてるでしょ
まさかループで一個ずつ挿入なんて実装はあるまい

678 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 19:10:49.64 ID:QEAEy0DH0.net]
>>655
失礼。挿入位置のiteratorもあるから、3つ受け取るタイプの誤り。

679 名前:デフォルトの名無しさん [2018/03/15(木) 22:07:51.82 ID:dQGk6ayHa.net]
cpprefjpの任意の式によるSFINAEの頁でdecltype(a + b, bool())と記載されているコードがあるんだけれど、
このa+b, bool()はラムダ式?

該当頁
https://cpprefjp.github.io/lang/cpp11/range_based_for.html

680 名前:デフォルトの名無しさん [2018/03/15(木) 22:09:23.09 ID:dQGk6ayHa.net]
アドレス間違えた
https://cpprefjp.github.io/lang/cpp11/sfinae_expressions.html

681 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 22:15:55.91 ID:3Ym40JOm0.net]
ラムダ式が[で始まらないことってあるのか?

682 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 22:41:44.53 ID:ubsUN4Yb0.net]
>>657
カンマ演算子とdecltypeでコンパイル時に評価される
decltypeの中身を左から順に評価し、結果は一番右の型が帰る
この場合はa+bの型が評価出来ればbool、できなければSFINAE

683 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 22:41:47.80 ID:XNo6/02A0.net]
>>657
>a + b
a + bが可能かどうか調べる

>,
次の式を評価する

>bool()
bool型の初期値を返す

つまりdecltype(a + b, bool())はa + bでSFINAEをしつつカンマ演算子でdecltypeにbool型の値を与えて返り値の型をbool型にしている



684 名前:デフォルトの名無しさん [2018/03/15(木) 22:57:18.20 ID:dQGk6ayHa.net]
decltypeで,も使えたんですね。一番右の型が帰るということはdecltype(a+b,a-b,a*b,a/b,bool())とかしてもよさそう。。。

自分ではその機能を説明してるページを見つけれませんでした。
ありがとうございます。

685 名前:はちみつ餃子 mailto:sage [2018/03/15(木) 23:50:51.42 ID:VBbQqJBt0.net]
>>660-661
それで良いのか。 いいこと知った。
いちいち enable_if をしとったわ。

686 名前:デフォルトの名無しさん mailto:sage [2018/03/16(金) 07:54:12.89 ID:UGENGinrd.net]
decltypeって実行時の型を得れる?

687 名前:デフォルトの名無しさん mailto:sage [2018/03/16(金) 09:23:42.20 ID:Qbg0TjKpa.net]
>>656
a.reserve(a.size()+b.size());
a.insert(a.end(),b.begin(),b.end());
こんな感じのことをやるのかと思ったんだけど、これ意味ないでしょ?

688 名前:デフォルトの名無しさん mailto:sage [2018/03/16(金) 10:04:08.28 ID:SYp9l/ZId.net]
>>664
declとはdeclareの略であることを考えると

689 名前:デフォルトの名無しさん mailto:sage [2018/03/16(金) 10:17:31.56 ID:g2YO+i2m0.net]
a.reserve(a.size()+b.size());
copy(b.begin(),b.end(),back_inserter(a));

690 名前:デフォルトの名無しさん mailto:sage [2018/03/16(金) 15:36:10.69 ID:0r9PteXTM.net]
>>665
random iteratorの場合の特殊化実装がありました。ごめんなさい

691 名前:デフォルトの名無しさん mailto:sage [2018/03/16(金) 18:08:23.55 ID:Al45BtF0p.net]
>>662
decltype comma trickでググれ

692 名前:デフォルトの名無しさん mailto:sage [2018/03/16(金) 20:56:30.80 ID:DBylbaSH0.net]
まあoperator,()が定義されてるとまずいんだけどな

693 名前:デフォルトの名無しさん mailto:sage [2018/03/19(月) 22:50:10.89 ID:OQSUItjMd]
codepad.org/C8t9k4fD
ソース自体をプログラムに読み込ませると
#includ
で止まってしまうんですけど何が問題でしょうか



694 名前:デフォルトの名無しさん [2018/03/19(月) 18:07:03.75 ID:/U1oheuNa.net]
インスタンスにdeleteかけたとき、メンバ変数が破壊されるのとデストラクタが実行されるのはどっちが先?
今書いてるコードがデストラクタでメンバ変数アクセスすると落ちることがあるから、破壊されるのが先なんだろうか?

695 名前:はちみつ餃子 mailto:sage [2018/03/19(月) 18:15:15.06 ID:RG1qd9Pc0.net]
>>672
原則としては構築の逆順って覚えておくと間違えない。

696 名前: mailto:sage [2018/03/19(月) 18:33:44.24 ID:lFWK67Qs0.net]
>>672
delete this; とかしてませんか、これは基本的に避けたほうがいい

697 名前:片山博文MZ mailto:sage [2018/03/19(月) 18:43:06.07 ID:SpFx62hRd.net]
>>674に同意。確保と破棄は生ポインタを触らずに自動化した方がいい。スマートポインタとかコンテナとか。
二回deleteを避けるためにポインタにNULLを代入する技もある。

698 名前:デフォルトの名無しさん [2018/03/19(月) 21:03:24.06 ID:kCg91IvDa.net]
そろそろNULLは駆逐してnullptrに移行させたい

699 名前:デフォルトの名無しさん mailto:sage [2018/03/19(月) 22:46:40.23 ID:jnDGFLZz0.net]
>今書いてるコードがデストラクタでメンバ変数アクセスすると落ちることがある
へ〜んなの
ていうかメモリを壊しているかすでにdeleteされた死骸を再deleteしてるとしか、

>二回deleteを避けるためにポインタにNULLを代入
OpenCVのC言語インターフェースのやつ、

700 名前:デフォルトの名無しさん mailto:sage [2018/03/19(月) 22:57:33.17 ID:cmSuhSLP0.net]
C++勉強中の者です。
codepad.org/C8t9k4fD
ソース自体をプログラムに読み込ませると
#includ
で止まってしまいます。
Cのfgets()のようには使えないのでしょうか。

701 名前:デフォルトの名無しさん [2018/03/19(月) 23:06:01.35 .net]
>>678
According to the C++ reference
en.cppreference.com/w/cpp/io/basic_istream/getline
getline sets the ios::fail when count-1 characters have been extracted.
You would have to call filein.clear(); in between the getline() calls.

702 名前:デフォルトの名無しさん mailto:sage [2018/03/19(月) 23:26:45.72 ID:cmSuhSLP0.net]
>>679
区切り文字を読まないとfail状態になってそれ以降は失敗し続けるので止まってしまうということですかね

703 名前:デフォルトの名無しさん mailto:sage [2018/03/19(月) 23:27:24.60 ID:jnDGFLZz0.net]
std::getline()は読み込んだ文字列に改行文字を含めないから
行末まできちんと読んだのか
文字数カウントのせいで読み込みが行の途中でぶちきれたのか
直ちにはわからないといいうアホウな仕様
判別には結局std::basic_istream<T>::unget()の助けが要る

C++標準ライブラリのうちストリーム関連だけは腐っているからC言語のを使いなしゃれ

※ 個人の感想です



704 名前:デフォルトの名無しさん mailto:sage [2018/03/19(月) 23:28:25.97 ID:jnDGFLZz0.net]
訂正
△: C++標準ライブラリのうちストリーム関連だけは腐っているからC言語のを使いなしゃれ
◎: C++標準ライブラリのうちストリーム関連だけは本当に腐っているからC言語のを使いなしゃれ

705 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 01:02:22.15 ID:mI6/gPTY0.net]
入出力はCもC++もクソまみれだからなぁ
ちょっとコンソール出力を整形しようとして、あの肥溜めのクソくだらない落とし穴地獄にいちいち付き合わされた結果
プログラミングそのものが嫌いになる人達が山のようにいるのが本当に残念だ

706 名前:デフォルトの名無しさん [2018/03/20(火) 01:12:22.56 ID:PXcTmg8I0.net]
いるか?

707 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 01:20:34.94 ID:mI6/gPTY0.net]
自分が知ってる昔はいっぱいいたけど
最近だとスクリプト言語から先に入るから減ってるのかね?

708 名前:はちみつ餃子 mailto:sage [2018/03/20(火) 01:21:52.68 ID:N1yoGURK0.net]
オブジェクトの外部表現を型ごとに定義できる iostream は悪くない設計だと思うんだけどなぁ。

709 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 01:41:51.26 ID:PjVFN34O0.net]
ローカライズに向いてない。
打鍵数が倍増どころじゃない。

モダン言語はみなprintfライクだしねー

710 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 02:48:01.36 ID:PXcTmg8I0.net]
printf()は便利ではあるが桁を揃えて出す時に面倒になることもある。
特にこの頃は UTF-8 で漢字混ざりだと文字幅とバイト数または文字数が一致しない。
そもそもそんなものの一致をあてにすること自体が間違いかも知れないが、Unicode
には一応 HALF WIDTH, FULL WIDTH 等があるんだから何とかしてこれを生かした
フォーマッタが欲しいところではある。

711 名前:デフォルトの名無しさん [2018/03/20(火) 06:49:53.60 ID:eswqOupsM.net]
>>673
>>674
あるクラスがあって、その中でスレッド立ててるの
それでクラスのデストラクタが呼ばれたら、メンバ変数のスレッドポインタをつかってスレッドcancel->joinってやろうとしてて
それでjoin呼ぶあたりで落ちるんだよね

作られた逆順ってことはデストラクタのほうが先に実行かな?それだとメンバ変数はいきてるよね

712 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 06:55:01.02 ID:83N3dpVy0.net]
streamはコンソールの入出力のためだけにあるわけじゃないから

713 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 06:55:05.50 ID:Wsijl5j90.net]
つーてもcoutだってsetw/setfillはあんまり使いやすくないしなあ
operator<<をユーザー定義できるのはありがたいけどね



714 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 13:10:27.33 ID:geezFnQ40.net]
>>689
デストラクタの実行中はそのクラスとその派生元クラスのメンバ変数はまだ使える
必ず落ちるならデバッガでバックトレース見てみたら?

715 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 19:32:56.49 ID:mI6/gPTY0.net]
別の原因に見える
まずデストラクタじゃなくて普通のメンバ関数で明示的に呼んで止めた時に大丈夫か確認してはどうか

716 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 19:45:17.42 ID:KQMGt9+Dd.net]
pthread_cancel はいろんなことがよく分かっている人しか使ってはいけない

717 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 22:33:41.91 ID:f35CyiEk0.net]
>>686
「<<」と「>>」の2種類しか用意できんやんけ
それらを表示と入力に割り当ててしまえば結局シリアライズのための固有なメソッドなりインターフェースなりを別途作らねばならんぬ、
そもそもの構想からして頓挫してゐる、
頓挫してゐるのだ…!

718 名前:はちみつ餃子 mailto:sage [2018/03/20(火) 23:55:08.06 ID:N1yoGURK0.net]
>>695
表示用とシリアライズ用はストリームの性質で切り替える筋合いのものだろ?
シリアライズ用のストリーム

719 名前:型を用意してオーバーロードすればいいんじゃね。 []
[ここ壊れてます]

720 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 00:33:52.80 ID:7c9Ne47J0.net]
ちょっなんで数億年の生物史史上はじめて
ようやっとSTDINとSTDOUTとSTDERRの3種類に世界が抽象化されたストリームという概念|を
細分化するという元の木阿弥にしますか;;

藻前は
  some_command | tee result.txt > some_file.bin
とかいったパイプやリダイレクトを表示専用とかシリアライズ専用とかに分けたいのかっていうか、

721 名前:デフォルトの名無しさん [2018/03/21(水) 00:44:24.33 ID:p0rFESlF0.net]
なに藻前って

722 名前:はちみつ餃子 mailto:sage [2018/03/21(水) 01:10:44.31 ID:MouF+uE40.net]
>>697
お前は何を言ってるんだ。
ここで言ってるストリームは C++ 用語のストリームだぞ。
「ストリーム『型』」ってわざわざ書いてるんだからわかれよ。
下位レイヤでは好きなところに繋げればいい。

723 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 01:18:27.48 ID:9NBOfW2C0.net]
streamとstreambufの違いを理解しよう



724 名前:はちみつ餃子 mailto:sage [2018/03/21(水) 01:24:40.58 ID:MouF+uE40.net]
要するに std::basic_ostream を継承した何かを作ればいいんだ。

725 名前:デフォルトの名無しさん [2018/03/21(水) 06:52:22.30 ID:fTbDiwfs0.net]
ストリームはもう捨てたほうが良いぞ。
おじさんからの警告だ。

726 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 07:14:12.04 ID:2n7LolrI0.net]
便利そうに見えて便利に使えない
それがstream

727 名前:デフォルトの名無しさん [2018/03/21(水) 07:18:35.01 ID:zecIlzA/0.net]
「29歳既婚、2年前に会社を辞めた。ボードゲーム作りを始めて3700万円を
売り上げたけど何か聞きたいことはある?」回答いろいろ
labaq.com/archives/51880196.html
日本ボードゲーム界の異端児に聞く!ボードゲームデザイナーとして生きていくには?
https://bodoge.hoobby.net/columns/00013
はじめてボードゲームを作ってはじめてゲームマーケットに出店した ので、ひとり反省会をしてみる。
datecocco.hatenablog.com/entry/2015/11/26/000000
はじめて作ったボードゲームを売った話
nrmgoraku.hateblo.jp/entry/2017/05/17/210000
ボードゲームイベント「ゲームマーケット」から業界が見えた!
https://entertainmentstation.jp/61107
ゲームマーケットに挑む人向けガイド
spa-game.com/?p=4830
ボードゲームはどう作るのか、自分なりに考えた
roy.hatenablog.com/entry/2014/07/09/124824
オトナも遊べるボードゲーム!自作するといくらになるのか
www.d-laboweb.jp/special/sp312/
ボードゲームの展示イベント「ゲームマーケット」の成長記録からこれからの
市場に必要なことを妄想してみた。6年間の来場者数推移(2016年4月時点調べ)
https://bodoge.hoobby.net/columns/00001
ボードゲーム市場がクラウドファンディングの出現で急成長を遂げ市場規模を拡大中
gigazine.net/news/20150820-board-game-crowdfunding/

728 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 10:36:30.48 ID:DQv7yGEy0.net]
>>697
カンブリア紀からオルドビス紀にかけて行われた抽象化は
今でいうインターフェイスの考え方で、当たり前だが
インターフェイスを継承する実装クラスは無数にあってよい
そういうのは元の木阿弥とは言わないぞ

729 名前:はちみつ餃子 mailto:sage [2018/03/21(水) 15:09:48.71 ID:MouF+uE40.net]
>>697
さっき >>699 で説明した C++ の話題を置くとしても、
(まあ C++ スレで C++ の話題を置いちゃうのはどうかと思うが)
標準入力、標準出力、標準エラー出力のみっつしかないってことはない。

エラー出力をリダイレクトするときに 2> って書くの、どういう意味だと思ってる?
2 はファイルディスクリプタな。
デフォでオープンされてるのが 0, 1, 2 ってだけで、やりたければ 3 でも 4 でも使っていい。

730 名前: mailto:sage [2018/03/21(水) 15:42:02.21 ID:ZGJmhAHm0.net]
>>706
空いているディスクリプタが使用されるとしても、自分で特定の数字を指定してディスクリプタにすることはできなかったんじゃなかったかな?

731 名前: mailto:sage [2018/03/21(水) 15:50:19.07 ID:ZGJmhAHm0.net]
>>707
失礼、dup2() というのがあったね…

732 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 15:58:29.69 ID:9NBOfW2C0.net]
coutがSTDOUTにつながってるだけでここは何につなげてもいいということ
streambufの中身はただの配列でもいいし、アプリケーションのロガーでもいいし、循環バッファでもいいし、通信のポートでもいい

733 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 19:28:41.53 ID:TV3lE0eZ0.net]
シリアライズするときはバイナリ表現にしたいし
ログするときは文字列表記にしたいし



734 名前:はちみつ餃子 mailto:sage [2018/03/21(水) 20:00:34.84 ID:MouF+uE40.net]
>>710
だからそれはストリームオブジェクトの型で切り替えろって言ってるんだろうが

735 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 20:30:34.07 ID:VVSY5O5Ed.net]
それを嫌だって言ってんだよ
バイナリの読み書きは write() だの read() で十分

736 名前:はちみつ餃子 mailto:sage [2018/03/21(水) 20:33:11.12 ID:MouF+uE40.net]
read なり write なりを「使う」のは別にいいよ。
それを C++ 上でどのように抽象化すればいいかって話なんだから。
そういうレイヤの違う話を混ぜ込んでくるなよ。

737 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 20:43:51.09 ID:KgSvodNyd.net]
そこで新しい型を設けてまで << を使う意味がない
cout にバイナリでシリアライズするときはどうすんの?
size_t serialize(const T& t, ostream& os)
とかを各型用に書く方がマシ

738 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 20:47:43.15 ID:KgSvodNyd.net]
バイナリでシリアライズするに際して
別の型のストリームオブジェクトを作ってまで
<< だの dec だの endl を使えるようにすることの利点を説明して欲しい

739 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 21:36:05.23 ID:9NBOfW2C0.net]
例外を除いて
operator<<()は書式化出力
write()は非書式化出力
なのでバイナリを出力するときはwrite()を使うべき

>size_t serialize(const T& t, ostream& os)
シリアライズのような複雑な操作をするときはこれは悪い選択じゃない
というかstreamそのものを放り込むのはたまに見かける

740 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 22:02:23.07 ID:52xrh1HkM.net]
えっブロックデバイスにもStreamを

741 名前:はちみつ餃子 mailto:sage [2018/03/21(水) 22:15:54.63 ID:MouF+uE40.net]
>>716
書式化 (formatted) ってのと、結果がバイナリかというのは直行する概念だよ。
シリアライズってのはオブジェクトのバイト列をそのまま出力することじゃなくて、
バイナリ形式の特定のフォーマットにして出力することだろ。
それは書式化って言うんだよ。

742 名前:はちみつ餃子 mailto:sage [2018/03/21(水) 22:26:24.75 ID:MouF+uE40.net]
>>715
マニピュレータを使える意味はないかもな。
使えないように定義することも出来るし、意味がないなら使えないようにしておくべき。

ここでは抽象化の話をしているんだ。
出力先が人向けのテキスト表現であるか機械向けのシリアライズ表現であるかによって
書き方を変えなきゃならない、相手を意識しなきゃならないというよりは、
相手によって自動で切り替わって欲しいってことなんだよ。

意識しなくていいデザインってのは意識しにくくなるってことと表裏一体だから、
見えなくなるのが気にくわないってのならわかる。

743 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 22:26:32.59 ID:OwhHF7Zm0.net]
直交



744 名前:はちみつ餃子 mailto:sage [2018/03/21(水) 22:29:29.81 ID:MouF+uE40.net]
>>720
スマソ。 >>718 の直行は直交の書き間違いやね。

745 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 23:13:33.75 ID:NRxI71LE0.net]
無意味な処理が嫌だとか言っておきながら
ここでは無駄の塊みたいな方法を勧める
アホですね

746 名前:はちみつ餃子 mailto:sage [2018/03/21(水) 23:50:04.75 ID:MouF+uE40.net]
>>722
俺は一貫して抽象化の話をしてるつもりなんだが。
プログラマの意図を表現できる書き方をすべきって話をしてんの。
無意味な処理をしろと書いてあるのをプログラマの意図として読み取っていいのか?
そうじゃないだろう。

C++ がせっかく用意しているライブラリを活用するのが無駄なのか?
そうじゃないだろう。

747 名前:デフォルトの名無しさん [2018/03/22(木) 07:21:49.59 ID:tiDItZ1f0.net]
ハッキリ言ってストリームは蛇足だったわ。
廃止したほうが良いわ。

748 名前:デフォルトの名無しさん [2018/03/22(木) 07:25:52.15 ID:tiDItZ1f0.net]
Boostもそうだけど、有り余るC++のパワーをカッコよく使いこなそうとしてやっちまったみたいな。
もうちょっと使う側の立場にたつべきだな。

749 名前:デフォルトの名無しさん mailto:sage [2018/03/22(木) 08:38:59.71 ID:0Y4DSJfq0.net]
黒魔術だなんだ言って楽しめないようではC++は向いていない

750 名前:デフォルトの名無しさん mailto:sage [2018/03/22(木) 10:14:29.52 ID:Q5Rs9TJ/0.net]
蛇足ねえ。。。
禿本1stでoperator overloadのデモ用に作られたサンプルなんだが
そういうのは後で取って付けた存在といえるのか?

751 名前:デフォルトの名無しさん mailto:sage [2018/03/22(木) 17:28:14.63 ID:PBLsyShY0.net]
業界全体としては奥の深さを求める人(求道者)を一か所に集め留めるのには非常に有益な言語

752 名前:デフォルトの名無しさん mailto:sage [2018/03/22(木) 17:34:08.02 ID:0Y4DSJfq0.net]
そのうちAsioやRangeあたりも標準化されるだろうし
もうその方向に突き抜けてほしい
使いやすい言語なんか他にいくらでもある

753 名前:はちみつ餃子 mailto:sage [2018/03/22(木) 17:41:04.44 ID:HExEyyqO0.net]
具体的にどういうときに不便なのか語れよ。
使いにくいってだけじゃ何にもわからん。



754 名前:デフォルトの名無しさん mailto:sage [2018/03/22(木) 17:43:00.10 ID:0Y4DSJfq0.net]
C++に関しては慣れてない人がそう言ってるだけだから

755 名前:デフォルトの名無しさん mailto:sage [2018/03/22(木) 19:57:57.53 ID:sR+euIcT0.net]
>>727
どの資料だったか覚えてないけど、演算子オーバーロードに関して
先生は「元の演算子の意味とかけ離れた挙動をさせるのは避けるべきだ」
みたいなことも書いてるよな。

まぁ、原則は指針であって絶対の規則じゃないわけだけど、
<< >> をビットシフトからストリーム入出力に振り替えておいて
どの口で言うか、このハゲッー! とか思ったり。

756 名前:デフォルトの名無しさん mailto:sage [2018/03/22(木) 20:06:11.34 ID:0Y4DSJfq0.net]
>>732
ストリームのような周知の事実になっているものはそれには当てはまらないでしょ

757 名前:はちみつ餃子 mailto:sage [2018/03/22(木) 20:22:42.90 ID:HExEyyqO0.net]
>>732-733
まああれくらいのものになると、オブジェクトに追加で突っ込んでいくような動作が「元の演算子の意味」になっちゃってるよな。

そんなことより C++20 に入る予定のカレンダーでは日付を 2018y/mar/22 とか書けるらしくて、
これはさすがにクソやろ……。
これもいずれ普通に受け入れる気持ちになるだろうか。

758 名前:デフォルトの名無しさん mailto:sage [2018/03/22(木) 20:47:25.31 ID:0Y4DSJfq0.net]
>>734
既にfilesystemのpathが/で階層作れるから
current_path / "aho" / "baka"みたいに
C++の演算子は連想ゲームだ

759 名前:デフォルトの名無しさん mailto:sage [2018/03/22(木) 22:18:28.94 ID:Q5Rs9TJ/0.net]
>>732
あの頃の禿はreverse_iteratorなんて思いもよらず
operator+が減算の動作をすることを否定してたね

760 名前:デフォルトの名無しさん mailto:sage [2018/03/23(金) 00:38:32.35 ID:2SqL+aT8a.net]
>>734
日付の表記は何種類かあるし年/月/日でも日/年/月でも表せるなら結構便利だと思う。

761 名前:デフォルトの名無しさん mailto:sage [2018/03/23(金) 08:21:50.21 ID:VCdaFb7Y0.net]
>>734
標準に「日付を表す型」みたいのが追加され、
それ用リテラルの接尾語(のひとつ)が ""y で 2018y

762 名前: は2018年を表す、
さらにこの型では / は日付要素を区切る演算子としてオーバーロードされてる。
…といった感じか?

確かに虚心坦懐に / を見れば、割り算のコンピュータ向け代用記号だけでなく
日付の区切りや、ファイルシステムの階層区切りでもあるけど。
[]
[ここ壊れてます]

763 名前:デフォルトの名無しさん mailto:sage [2018/03/23(金) 09:13:18.25 ID:xSYf1jdZ0.net]
aのb乗
a^b
a**b



764 名前:デフォルトの名無しさん mailto:sage [2018/03/23(金) 10:31:52.82 ID:fMiQp2pkd.net]
こんだけ演算子は深いのになぜか未だに[]は引数を一つしか取れない

765 名前:デフォルトの名無しさん [2018/03/23(金) 10:45:38.60 ID:COiOJTLla.net]
「静的」、「動的」というのがよく分からないのですが、詳しく書いてある本はありますか?

ヒープ領域がどうたらとかいうのもよく分かりません。
スタックとかいうのもよく分かりません。

詳しく解説している本を教えてください。

766 名前:デフォルトの名無しさん [2018/03/23(金) 10:48:57.55 ID:COiOJTLla.net]
ロベールのC++の本を読んでいて疑問に思いました。

767 名前:デフォルトの名無しさん mailto:sage [2018/03/23(金) 19:28:55.75 ID:FQA7q+b8M.net]
>>738
> …といった感じか?
そんな感じらしい
d.hatena.ne.jp/yohhoy/touch/20180322/p1

日本だと基本 年/月/日 しかないしソースコードに 睦月、如月、弥生 なんて書く奴はいないからいまいち便利さがわからんけどあちらの人にとっては便利なんだろうか

768 名前:デフォルトの名無しさん mailto:sage [2018/03/23(金) 19:30:12.07 ID:5ELqDBlL0.net]
ポップとプッシュの概念もよく分かってないのでは
www.cc.kyoto-su.ac.jp/~yamada/ap/stack.html
これが分かって来るとC++に於けるバッファオーバーフローBOF攻撃の仕組みが分かって来る

769 名前:デフォルトの名無しさん mailto:sage [2018/03/23(金) 19:42:22.13 ID:5ELqDBlL0.net]
バッファオーバーフロー: #1 概要
https://www.ipa.go.jp/security/awareness/vendor/programmingv2/contents/c901.html

770 名前:デフォルトの名無しさん mailto:sage [2018/03/23(金) 19:52:45.96 ID:e6tCc9HsM.net]
五曜は対応してくれると有り難いかも知れないけど
他はいらんな

771 名前: mailto:sage [2018/03/23(金) 19:55:59.42 ID:J4dYcx4H0.net]
>>741
C/C++ のメモリ構造について、になります。
これは基本的な事項で、初級を脱するためにはぜひとも必要な知識なんですが、
そのわりにあまりに解説されることがないような気がします
適切な説明がないものか…

772 名前: mailto:sage [2018/03/23(金) 19:59:40.83 ID:J4dYcx4H0.net]
>>741
まず、メモリの管理方法として

1. スタックエリア、に格納するやり方
2. ヒープエリア、に格納するやり方

の大きく分けて二通りがあり、

2. ヒープエリア、二格納するやり方について

2-1. 「静的」:static キーワードを使うやり方
2-1. 「動的」:malloc()/free() または new/delete を使うやり方

が分類されます。

773 名前:デフォルトの名無しさん mailto:sage [2018/03/23(金) 20:10:28.07 ID:e6tCc9HsM.net]
データセグメントって無くなったの?



774 名前:デフォルトの名無しさん [2018/03/23(金) 20:39:25.53 ID:COiOJTLla.net]
>>747-748

ありがとうございました。

あまりそういう本はないんですか。

もしかしたら、ヘネシーらのコンピュータのハードの本とか読まないといけないんですかね?

あるいはコンパイラの本ですかね?

775 名前:デフォルトの名無しさん mailto:sage [2018/03/23(金) 20:40:47.42 ID:l1/KZZgNM.net]
>>748
一般的に、静的領域をヒープとは呼ばんだろ

776 名前:デフォルトの名無しさん mailto:sage [2018/03/23(金) 20:41:24.55 ID:qmCr5Czp0.net]
こういうのはネットで覚えたからどういう本に書いてあるかはわからん

777 名前: mailto:sage [2018/03/23(金) 20:45:34.35 ID:J4dYcx4H0.net]
>>750
手っ取り早いのは「マシン語」を書いてみる、マシン語(アセンブリ言語)のルーチンを C にリンクさせる、ていうのが王道ですが、
昨今はマシン語のいい教科書がない、という気がします

gcc のインラインアセンブラとかが有望だとは思いますが、まあ簡単にマシン語を記述している教材なんていうものが思いつかない、マシン語の需要というか動機がないのかもしれませんが

778 名前: mailto:sage [2018/03/23(金) 20:46:44.14 ID:J4dYcx4H0.net]
>>751
うーむ、たしかに static を「ヒープ」とは言わないかもしれませんね…

779 名前:デフォルトの名無しさん mailto:sage [2018/03/23(金) 20:47:37.33 ID:COiOJTLla.net]
>>753

ありがとうございました。
マシン語の本を探してみます。

>>752

ありがとうございました。
本に書いていない場合には仕方がないのでネットで調べてみることにします。

780 名前:はちみつ餃子 mailto:sage [2018/03/23(金) 22:32:48.28 ID:ehYNLgPn0.net]
どうだろ?
C++ の言語仕様的にはオブジェクトの寿命に違いがあるだけで、
それを実現するメカニズムについては詳細な規定があるわけではない。

まずは C++ のパラダイムの中で理解を深めれば自然に理解できるんじゃないの?
手を広げすぎても収集が付かなくなる気もするんだけどなぁ。

781 名前:デフォルトの名無しさん mailto:sage [2018/03/23(金) 22:56:58.27 ID:io4DvPx8a.net]
マシン語に手を出すのは飛躍しすぎだしやめといた方がいい。ある程度C++になれてより深く理解したいと思うようになってからがいいよ。

動的、静的は大雑把に言えば、コンパイル時つまりソースを書いた時点で決まるものを静的、実行時に変化するものを静的と呼ぶ。
変数の型とかメモリ領域の確保の仕方とか、いろんな文脈で使われる。

782 名前:デフォルトの名無しさん mailto:sage [2018/03/23(金) 22:57:57.59 ID:io4DvPx8a.net]
>>757
実行時に変化するのは動的でした

783 名前:デフォルトの名無しさん mailto:sage [2018/03/23(金) 23:15:38.28 ID:g9Gf634nM.net]
>>757
決まる、決まらないの主語は何でしょうか?



784 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 00:54:38.69 ID:LvcaB4Q+0.net]
メモリについて知りたいんならC言語から始めたら良い
Unixの移植目的で設計されたC言語は、実行効率のためほとんど必然的にメモリが透けて見える言語になったんである
『プログラミング言語C』という名著もある
これの後ろの方のmalloc()の実装サンプルまで通読したら
シングルCPUの範疇ならメモリについて嫌でもワカル

『プログラミング言語C++』と違って三日もあれば読めれる手頃な分量やしな!

785 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 01:27:57.09 ID:eFb1d56B0.net]
>>759
横だが。

何でも、だよ。
型なら静的型、動的型というし、メモリ確保なら静的確保、動的確保という。

マシン語は飛躍しすぎ。
CのエンハンスとしてC++を使うのならマシン語(インラインアセンブラ)もありだが、
C++をJava/C#/C++の並びで使うつもりならインラインアセンブラとか禁止でしょ。

というかそもそもその辺が分からない=全くの初心者がC++からやろうというのが間違い。
PythonかRubyあたりから始めとけ。(どっちも俺は知らんけど)

786 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 01:40:25.62 ID:nPxx/G4d0.net]
コンパイラがコンパイル時に決めるものが静的、出来上がったプログラムを実行した時に決まるのが動的
C++だとそういう理解の方がわかりやすいと思う

マクロ、テンプレート、constexpr、リテラル、式や変数や関数やクラスの宣言型なんかは静的
静的なものは全部コンパイラが決めるからプログラムの実行時にはいちいち計算しないし、バグで決められなかったらコンパイラが怒る

変数やインスタンスの中身、関数呼び出し、仮想クラスのオブジェクト型なんかは動的
実行環境や食わせた入力・ファイルなんかに依存するからプログラムを実行してみないと決まらない
動的なバグはコンパイラは感知できないから客先でプログラムを実行するとクラッシュする

適当だけどだいたいこんな感じ

787 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 02:04:25.06 ID:eFb1d56B0.net]
細かいようだが、

コンパイル時に確定=静的
実行時に確定=動的(=コンパイル時に確定できない)

で若干の例外(staticとか)があるが大体あってる。

「プログラミング言語C」はやめとけ。名著だが、あれは
「既にプログラミングを出来る人が、C言語を学ぶ」用であって、全くの初心者じゃ読めない。
「プログラミング言語C++」も止めとけ。あれも「既にCを使える人が…」で以下同文。
他本は総じてゴミなのも事実だが。

788 名前:デフォルトの名無しさん [2018/03/24(土) 02:06:26.05 ID:Z79Bg+7E0.net]
特定のアドレスにデータを配置して割り込みかける必要があるからじゃないだろか。

789 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 02:09:36.82 ID:nPxx/G4d0.net]
予約語のstaticは転用されまくってわけわからなくなってるので
「静的」とソースコード上のstaticは全く別物だと思った方がいい

790 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 02:15:26.90 ID:qYWJwKPe0.net]
その辺整理されないんだろうかね
そう言うものだという説明で
不本意ながら納得する事何十年

791 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 02:29:56.73 ID:eFb1d56B0.net]
そんなに混乱するか?例外としてしまって問題ないと思うが。
俺は規格には詳しくないが、(というより色々混ざってしまっているが)

・Cのstatic関数=ファイルスコープに限定、externの反対 --- (A)
 はC++ではなんとかされたのではなかったっけ?(どうせ使わないからどうでもいいが)
・staticクラス、あるいはクラスのstaticメソッド --- (B)
 は「静的」で矛盾しないから、そもそも問題ない。
・関数内static変数でプチグローバル(みたいなやつ) --- (C)
 も普通にクラスにしろ、って話でしかないし、使わないだろ。

結果、普通に使う分には特に混乱しないと思うが。
文法オタクは気にするのかもしれんが。

(C)は「動的関数にしよう」という意図があったのかもしれんが、
結局C/C++の世界は静的関数しかないから、意味無かったし。
というかそもそも俺は動的関数のメリットがよく分からん。
C#は動的関数だが、結局ロード/アンロードはアセンブリ単位=ほぼ起動時に纏めて、
であって、活用してない。
Javaは動的関数でメリットを享受してるんだっけ?(知らんから教えて)

792 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 02:33:41.17 ID:y/z0A0hW0.net]
https://ideone.com/Epp30z
お兄ちゃん助けて、コンパイルが通らないの。

VCで開発してます。
jsonのメモリーモデル研究にとりあえずシェアードPTRの組んでそれからやっぱユニークPTRの変更しました。
色々いじってるのですが、意味不明なエラーが出てさっぱりわかりません。
自前のコードなら自分でどうにかするのですが、コードステップするとライブラリの中でえらーおこしててさっぱりです。
どなたかご教示ください。お願いします。

793 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 02:46:21.51 ID:nPxx/G4d0.net]
std::vector<UniqueObject>にstd::pair<UniqueObject,UniqueObject>突っ込もうとしてんじゃん
ちゃんとエラーメッセージ読めよ



794 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 02:51:39.38 ID:y/z0A0hW0.net]
え?何行目ですか?そんなバカな・・・。え?

795 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 03:47:44.28 ID:jOWDr2Es0.net]
static関数は恐らくリンク工程がdynamicの場合があるため
それに対してのstaticなんだろな

796 名前:デフォルトの名無しさん [2018/03/24(土) 03:55:06.40 ID:Z79Bg+7E0.net]
毎回思うんだけど、なんでgccで勉強しようとするんだろうな。
エラーメッセージ読めと言われても読めるわけがない。
一番わかりにくいメッセージを出すコンパイラで勉強する子が不憫でならない。

797 名前:デフォルトの名無しさん [2018/03/24(土) 04:28:06.63 .net]
>>772
VCで開発って書いてんだろーが

798 名前:デフォルトの名無しさん [2018/03/24(土) 04:30:46.18 ID:Z79Bg+7E0.net]
確かに書いてあるな。
じゃあエラーメッセージ読めよ。

799 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 05:34:00.15 ID:GrrVfR010.net]
読む気のない奴は何使ってもダメだという良い例

800 名前:デフォルトの名無しさん [2018/03/24(土) 06:12:32.26 .net]
いつも大量のWarningが出るのを真面目に対処せず放置してるからErrorが出ても理解できない罠

801 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 06:12:34.93 ID:y/z0A0hW0.net]
https://ideone.com/FN5IrI

理屈の一つは多分。
イニシャライザーリストが要素をconstで構築するからmoveできない?
内部でconst_castするわけないしこれ詰んでない?

あるぅぇ〜。なんでじゃー。

802 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 06:25:04.10 ID:0qB0BmlJ0.net]
static_castの動作内容は翻訳時に全て確定する
dynamic_castの動作内容は実行時のvtableにより変化する

static_assertは翻訳時に検査を行う
assertは実行時に検査を行う

static link libraryは翻訳時に結合する
dynamic link libraryは実行時に読み込む

803 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 06:57:20.04 ID:XPzSeRia0.net]
どうやら >>741 の質問は C++ に限定した話ではないみたいだから、
C と C++ の両方を扱うスレッドに移動するのが良いんじゃないかな。

「Cの場合は…」「ここC++のスレッドだし」レベルの齟齬が避けられるし、
このスレッドを見てないC専門の人が有用な情報を持ってるかも知れん。


【初心者歓迎】C/C++室 Ver.102【環境依存OK】
ttp://mevius.5ch.net/test/read.cgi/tech/1509780815/

スレを勃てるまでもないC/C++の質問はここで 25
ttp://mevius.5ch.net/test/read.cgi/tech/1471100645/



804 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 09:00:52.23 ID:eFb1d56B0.net]
>>779
質問者はそれ以前の、プログラミング一般の「静的」「動的」の区別が付いてない。
スレ移動しても意味無い。というかどこのスレでも同じ。

C++のstaticは、Cのグダグダな仕様を引きずっているからおかしくなっているだけで、
C++で新たに設定されたstaticは他言語とも整合取れてる。
これに関しては「Cが悪い」でいいと思うよ。

説明している本が無いのは、そもそもそんなところで引っかからないだろう。
教習所でハイオクの話をしても意味無い。
一通り動く物を組めるようになるまではそれにフォーカスしろ、でいい。

805 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 09:28:18.28 ID:nPxx/G4d0.net]
静的動的の区別は大事だし引っかかりやすい所でもあるでしょ
テンプレート引数に変数突っ込んでなんで動かないのぉぉとか初心者はよくあるよ

説明してる本がないって本当か?本当なら世の本がクソすぎる

806 名前:デフォルトの名無しさん [2018/03/24(土) 10:20:48.01 ID:Z79Bg+7E0.net]
で、静的と動的の違いは何なんだよ。
ガンダムで説明してくれ。

807 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 10:26:44.70 ID:UtKAK1R90.net]
staticとauto

808 名前:デフォルトの名無しさん [2018/03/24(土) 10:38:33.14 ID:Z79Bg+7E0.net]
ガンダムで説明できないうちは理解できてることにならないぞ。

809 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 10:49:46.91 ID:jOWDr2Es0.net]
アインシュタインみたいなこと言ってんじゃねえよ

810 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 11:08:12.95 ID:aqtEECgt0.net]
ガンダム言語の表現力を信じろ

811 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 11:10:56.81 ID:eFb1d56B0.net]
>>784
じゃあお前が説明しろよ。
お前は馬鹿だから出来ないと思うがな。

そもそも>>764は誰向けのレスだよ?

812 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 11:18:43.16 ID:aqtEECgt0.net]
コーディング規約にchar aznable禁止っていうのを見たことあるから
C++にガンダム要素を入れるのはタブー

813 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 11:28:25.89 ID:eFb1d56B0.net]
>>781
> テンプレート引数に変数突っ込んでなんで動かないのぉぉとか初心者はよくあるよ
ねえよ

> 説明してる本がないって本当か?本当なら世の本がクソすぎる
世の本は概して糞だ。これは事実だ。

というかここら辺の認識がずれるのは世代ギャップだ。
現状の本を書いてきている世代は全員CをやってからC++をやっている。
だから「静的」「動的」の区別が付かない状態でテンプレートを触ることがなかった。
当然そこを解説した本もそんなにあるはずがない。

お前らの世代がCをやらずにいきなりC++を始め、それで色々苦労した経験があるのなら、
お前らの世代の連中が本を書かなければならない。ただそれ以前に、
俺はその必要(全くの初心者がCをやらずにC++を始める)があるとは思えないが。

入門書を書いている連中はプログラマでも宣教師でもなく、ただのテクニカルライタだ。
だから需要(売れる)があれば書くだけ。今無いのは需要がないと見られているから。
俺もこの見方については同意する。
最初のプログラミング言語がC++ってのは単純に選択を間違えてる。



814 名前:デフォルトの名無しさん [2018/03/24(土) 11:30:12.41 ID:Z79Bg+7E0.net]
C++とJavascript以外学ぶ必要があるとは思えない。

815 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 12:01:13.85 ID:3GLZsUhUM.net]
>>790
それはさすがに世間が狭すぎる
土方志望としてもJava程度は触っとけ

816 名前:デフォルトの名無しさん [2018/03/24(土) 12:18:09.21 ID:Z79Bg+7E0.net]
Javaは当初の理念を失ってしまったように感じる。

817 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 12:21:12.10 ID:aqtEECgt0.net]
JavaはJVM上で動く一言語に成り下がったからな

818 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 17:03:55.62 ID:nPxx/G4d0.net]
今からJavaやるくらいならC#にしとけ

819 名前:デフォルトの名無しさん [2018/03/24(土) 18:05:30.46 ID:upExxHyGa.net]
みなさん、ありがとうございました。

カーニハン他の本をまず読んでみようと思います。

>>794

そうなんですか?

Robert SedgewickらのAlgorithmsという教科書がJavaで書かれているため、
Javaの本も買って読んでいます。

ところで、学術的?な本では、オブジェクト指向言語としてC++かJavaが
大抵使われていますが、C#は使われていません。これはマイクロソフト
という一企業が設計した言語だからでしょうか?

820 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 18:06:22.88 ID:upExxHyGa.net]
たとえば、プログラミングコンテスト関係の本では大抵C++が使われています。

821 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 18:07:40.93 ID:upExxHyGa.net]
そういう理由から、本当はC++ではなくC# + Visual Studioを勉強したいのですが、
C++の本(ロベール)を買って読んでいます。

822 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 18:12:06.94 ID:aqtEECgt0.net]
そのうち大抵の言語は経験なくてもリファレンス片手に使えるようになるから好きなもん使え

823 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 18:12:52.16 ID:0qB0BmlJ0.net]
C++だって元々はAT&T製なんだが



824 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 18:20:10.81 ID:LkK69e8iM.net]
javaも神託に従わないと訴えられるという…

825 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 18:50:18.42 ID:eFb1d56B0.net]
>>797
なら素直にC#やっとけ。
その後に必要ならC++で何も問題ない。

C#は商業的につまずいたのでJavaほどの知名度はないが、
言語自体はJavaよりは断然いい。(後発だから当然だが)

826 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 19:07:41.38 ID:weQnYJFBd.net]
ねーねー。
STL作った人は、共産主義国で食中毒にあって、ベッドの上で朦朧とした頭で閃いたって話だった気がしたけど、どっかにその話のソースある?
ググっても見つからないよー

827 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 19:12:27.84 ID:UtKAK1R90.net]
神託は絶望の淵やタヒぬ直前に見えたりするもんやで

828 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 19:18:50.87 ID:LkK69e8iM.net]
>>802
見つけてきたぞ。何処かで発表か何かするの?
www.stlport.org/resources/StepanovUSA.html

ところでこのインタビューにあるtamagawa numberってなんだろう

829 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 19:25:16.65 ID:upExxHyGa.net]
玉河数

https://ja.wikipedia.org/wiki/%E7%8E%89%E6%B2%B3%E6%81%92%E5%A4%AB

に書いてありました。

830 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 19:30:46.97 ID:LkK69e8iM.net]
玉川数じゃ出てこないわけだ

831 名前:801 mailto:sage [2018/03/25(日) 06:55:48.47 ID:FlrNzX5dd.net]
皆様ありがとーございます。
論文の枕で書こうかと思いまして

832 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 11:36:01.08 ID:Lywxeunja.net]
char* str = "abc";

とは書かずに、

const char* str = "abc";

と常に書くようにと本に書いてあります。

理由は文字列リテラルは直接書き換えてはいけないからであると書かれています。

●コンパイルは通っても、実行するとエラーになることもある。
●同じ内容の他の文字列リテラルまで書き換えられてしまうことがある。

とも書かれています。

禁止されているにもかかわらず、コンパイルが通る可能性があるというのはどういう
ことなのでしょうか?

(1)コンパイルエラーが発生
(2)コンパイルは通るが実行するとエラーが発生
(3)コンパイルは通り、実行してもエラーが発生しないが、同じ内容の他の文字列
リテラルまで書き換えられてしまうという不具合が起こることがある。

コンパイラーの設計者には、(1)、(2)、(3)の選択肢があるのはなぜでしょうか?

禁止されているのだから、一律にコンパイルエラーにするのが自然に思われます。 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)


833 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 11:39:58.12 ID:Lywxeunja.net]
const char* str = "abc";
const char ca[] = {'a', 'b', 'c', '\0'};

の二つは同じことだと思っていましたが、これは違うということでしょうか?

const char* str = "abc";

では、"abc"をある場所に格納しておき、それを使いまわしたりすることがある
ということでしょうか?

例えば、

const char* str1 = "abc";

const char* str2 = "abc";

と書いたときに、 str1 == str2 になることがあるということでしょうか?

一方、

const char ca1[] = {'a', 'b', 'c', '\0'};
const char ca2[] = {'a', 'b', 'c', '\0'};

と書いた場合には、それぞれ、別に格納場所が確保されるということでしょうか? 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)




834 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 11:41:04.91 ID:tMBl9Z88M.net]
>>808
>>469

835 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 11:44:30.72 ID:Lywxeunja.net]
すみません。
カーニハンらの本の日本語版のp.127に書いてありました。

char amessage[] = "now is the time";
char *pmessage = "now is the time";

の違いについてです。

そして、文字列の内容を変えようとすると、その結果は不定となる

と書かれいます。なぜ不定としているのかについては理由は書いてありません。

836 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 11:46:43.36 ID:Lywxeunja.net]
>>810

ありがとうございました。
故意に違反状態にするということもあるんですね。
正直言って無駄に分かりにくいところがあるんですね。

837 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 12:26:26.43 ID:NNknxHvv0.net]
うん過去のもうメンテナンス不能なコードは膨大なんでそうするしか仕方ないんだよ

838 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 12:40:02.16 ID:L+/M5ACh0.net]
以前にも同じ質問出たし荒しかとおもた

839 名前:デフォルトの名無しさん [2018/03/25(日) 13:01:03.23 .net]
C++相談室で出す話題でもなかろに

840 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 13:06:46.65 ID:zn3nsIh00.net]
一応初心者向けのスレっていう体じゃなかったのか?

841 名前:デフォルトの名無しさん [2018/03/25(日) 13:52:43.26 .net]
ここか、

C言語なら俺に聞け 145
mevius.2ch.net/test/read.cgi/tech/1519046038/

せめてここ向きの質問だろう

【初心者歓迎】C/C++室 Ver.102【環境依存OK】
mevius.2ch.net/test/read.cgi/tech/1509780815/

842 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 15:10:26.39 ID:9t80sXyiM.net]
>>811
旧K&Rつまり第一版は書換可能だったの

843 名前:デフォルトの名無しさん [2018/03/25(日) 15:22:53.51 .net]
C++スレでK&Rの話すんなや



844 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 17:38:21.10 ID:S7OmeNGW0.net]
>>808
ISO/IEC14882:2017 C.1.1の段落3で
char* p = "abc"; // valid in C, invalid in C++
となっているので、C++ではコンパイルが通ってはいけない

なぜ通ることがあるのかというと、
JIS X3014:2003 D.4で
定値文字列からの暗黙変換 文字列リテラルに対し,定値から非定値へ暗黙変換することは,推奨しない(4.2参照)。
となっており、C++03に従う限りコンパイルは通ることになっていた名残だ

845 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 17:59:44.09 ID:oI54xnZZ0.net]
するなと言われてもスーパーセットなんだからC言語の記法がどこまで通じるかは重大な問題だと思う

846 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 18:24:54.69 ID:S7OmeNGW0.net]


847 名前:O「それは間違い」なんだが
本音ではそのとおり
[]
[ここ壊れてます]

848 名前:はちみつ餃子 mailto:sage [2018/03/25(日) 18:36:39.65 ID:vqcfoPV60.net]
>>821
スーパーセットにするというよりは、
つかず離れずというポジションかなぁ。
C++ が先にやったのを C で取り入れたことも有るし。

849 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 18:55:57.82 ID:HW+VfLnzM.net]
可変長配列とか名前付きの構造体初期化とかc++に取り込まれたんだっけ?
スーパーセットは20年前にとっくに終わったんじゃないかと。

すでに導入されてたらスマソ

850 名前:はちみつ餃子 mailto:sage [2018/03/26(月) 05:22:15.91 ID:S9VCdiyC0.net]
>>824
たぶん入ってないな。

可変長配列 (VLA) って確か C でもオプショナルに格下げされてただろ。 (C11 から)
C++ のイニシャライザはだいぶん複雑になっちゃったから辻褄の合うようにするの大変だろうし、
もうやらないんじゃないかな。

851 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 11:36:03.37 ID:pTR+m2Zc0.net]
実用レベルではほぼスーパーセットといっても差し支えない

852 名前:デフォルトの名無しさん [2018/03/26(月) 11:51:36.03 .net]
実用レベルではCがC++のサブセットだし🙄

853 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 12:28:17.38 ID:tDSLT7/Xd.net]
実用レベル:=C++にも存在する機能に制限されたC



854 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 22:04:18.63 ID:cCKTbT1E0.net]
C11の_GenericとかそれCで敢えてやる必要あるの?って思う

855 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 23:52:36.66 ID:TogAHTIh0.net]
微妙に使い辛い機能だし分からんでもないけど、本当の名前がちゃんと見えてるのはちょっと安心感

856 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 23:58:29.09 ID:bouVP8Z10.net]
>>829
スイッチで選択するのをスマートにした感じやな。
イマイチ〜〜。
テンプレート一個書いて複数にジェネレートさせる方が好み。

857 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 01:36:13.83 ID:tW2Kdf3t0.net]
あるクラスAのラッパークラスWで
A&を受け取る場合はWの全てのメソッドが使えて
const A&を受け取る場合はWのconstメソッドだけが使えるように制限する設計って
ありましたっけ?

858 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 01:42:41.92 ID:6oSpwfuc0.net]
おーばーらいど。

859 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 06:31:21.75 ID:m3riabwu0.net]
あとは operator -> でポインタ返すやり方とかだな

860 名前:デフォルトの名無しさん [2018/03/27(火) 06:53:48.55 .net]
>>832
制限っていうのは、コンパイルエラーにしたいの?

861 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 07:01:18.53 ID:tW2Kdf3t0.net]
A a0;
const A a1;
W w0(a0);//OK
W w1(a1);//NG
const W w2(a1);//OK
const W w3(a0);//OK
で、Wの非constメソッドには必ずconstメソッドが対応して存在している
みたいな

862 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 07:12:14.69 ID:6oSpwfuc0.net]
設計がダサい気がするけど、何に使うんだろう。

863 名前:デフォルトの名無しさん [2018/03/27(火) 07:35:02.82 .net]
>>836
NGっていうのは、コンパイルエラーにしたいの?



864 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 07:36:16.27 ID:tW2Kdf3t0.net]
>>838
そうですね

865 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 07:40:26.10 ID:ofLFYE4b0.net]
>>837
明確な欠点を指摘出来ない時に使う言葉だな
「ダサい」

866 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 11:34:17.37 ID:bA2HN2rY0.net]
クラスを
W
MutableW (変更可能なW)

と分けるのがよく使われる現実的な解だと思う
MutableW は W の派生型として実装すると楽

>>836
>で、Wの非constメソッドには必ずconstメソッドが対応して存在している

この部分は意味不明なので聞かなかったことにしておく

867 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 12:08:25.74 ID:tW2Kdf3t0.net]
なるほど、ありがとうございます

868 名前:はちみつ餃子 mailto:sage [2018/03/28(水) 16:37:44.82 ID:jJD3k2j80.net]
>>832
テンプレートにしておいて SFINAE で分岐するという方法はとれるが……。

869 名前:デフォルトの名無しさん mailto:sage [2018/03/28(水) 18:32:49.43 ID:rzqMRle+a.net]
C言語ってこんなので就職できるらしい…

【企業】「”C言語…?どこかで見た”程度でOK」 名古

870 名前:屋のアテック、求人広告が話題に エンジニアの人材不足、面白求人でカバーできる?
https://asahi.5ch.net/test/read.cgi/newsplus/1522229305/

本物のC++プログラマーを募集してる某社とはえらい違いだな
[]
[ここ壊れてます]

871 名前:デフォルトの名無しさん mailto:sage [2018/03/28(水) 20:11:10.89 ID:nsQQ2hCk0.net]
永久にPHP弄らせる要員としては十分

872 名前:デフォルトの名無しさん [2018/03/28(水) 20:50:12.70 .net]
>>844
言語ヲタなんてプロジェクトに一人いれば十分だし

兵隊は言語の知識よりコミュニケーション能力、報連相、Excel方眼紙スキルが大事よ

873 名前:デフォルトの名無しさん mailto:sage [2018/03/28(水) 20:55:08.40 ID:NO5LUaew0.net]
上司を黙らせるスキルでしょ
盛らないでね



874 名前:デフォルトの名無しさん mailto:sage [2018/03/28(水) 22:09:32.87 ID:nsQQ2hCk0.net]
会社員なのだから上司が納得することだけが重要

875 名前:デフォルトの名無しさん [2018/03/28(水) 22:29:42.33 .net]
上司なんか関係ないやろ

お客さんを味方に付けることや

876 名前:デフォルトの名無しさん mailto:sage [2018/03/28(水) 22:33:35.60 ID:fYzIlbdt0.net]
関係あるだろ

877 名前:デフォルトの名無しさん [2018/03/28(水) 22:46:49.55 ID:2H+8IznE0.net]
上司も客も関係無いよバカども
プログラミングの話だバカども

878 名前:はちみつ餃子 mailto:sage [2018/03/28(水) 23:56:58.42 ID:jJD3k2j80.net]
マ板でやれ

879 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 00:40:46.75 ID:zCjdEvGWM.net]
visualstudio2017 Win32アプリケーションでSQLiteを使いたいのですが
Nugetにそれらしきものが合ったのでインストールしようとしたのですが以下のエラーでインストールできません。
https://www.nuget.org/packages/SQLite/

パッケージ 'SQLite 3.13.0' をインストールできませんでした。このパッケージを 'native,Version=v0.0' を対象とするプロジェクトにインストールしようとしていますが、
そのフレームワークと互換性があるアセンブリ参照またはコンテンツ ファイルがパッケージに含まれていません。

どうすればよいのでしょうか。

880 名前:デフォルトの名無しさん [2018/03/29(木) 00:42:57.97 ID:+dX3Weor0.net]
CoAppのタイムスタンプ調べてみて。
NuGetは捨てろ。

881 名前:デフォルトの名無しさん [2018/03/29(木) 00:48:50.94 ID:+dX3Weor0.net]
代わりに何を使うか。
VCPKG。
ただし、MSは三年後にVCPKGも捨てているだろう。
逆に我々がVSを捨てる時期に来ている。

882 名前:デフォルトの名無しさん [2018/03/29(木) 00:53:15.59 ID:+dX3Weor0.net]
MSの方針としてC++を捨ててC#に移行させるというのがあって、C++ユーザーはあの手この手で改宗を迫られる。
もはやVSでC++は苦行。
というか、WindowsでC++が苦行。

883 名前:デフォルトの名無しさん [2018/03/29(木) 00:55:08.86 ID:+dX3Weor0.net]
C++を捨ててC#に移行するか、Windowsを捨ててOSXかLinuxに移行するか。
二択。
WindowsではC#が正解。
なぜならMSがそれを望んでいるから。



884 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 01:05:50.70 ID:xx4XvERn0.net]
C++のチームも頑張って更新してるけどな
IDEとコンパイラは十分なのに
・パッケージマネージャーがクソ
・再起動しないとPATHが更新されない
・VSのプロジェクトが用意されていないとビルドが面倒
と環境が整備されてなさすぎる

885 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 01:09:04.86 ID:y/yCqDtn0.net]
C# + C++/CLI + C++
という選択肢

886 名前:デフォルトの名無しさん [2018/03/29(木) 01:14:03.03 ID:+dX3Weor0.net]
我々が間違っている公算も高い。
我々はC++を使いこなせる。
だから、C++なら簡単にできるのになぜそうしない?と思ってしまうが、これから学ぶならC#のほうが簡単だろう。
MSがC#を推すのは正しいのかもしれない。

887 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 01:20:39.82 ID:xx4XvERn0.net]
C#はビジネス用だから
より早く大量にコードを生産することを目的としているからC++とは用途が違う

888 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 02:12:12.07 ID:Hc4kPWXM0.net]
Android でも iPhone でも Windows でも使える共通部分のコードは c++ で、
ってのを C# に変えたいのかもしれんが
別段 c++ で不自由ないしなあ…

てか c# って .Net のイメージ強すぎて単体で使える気がまるでしない

889 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 03:27:22.16 ID:T1PPEJjr0.net]
未だにproperty実装出来ていないC++標準仕様が異常なんだぜ
そりゃMSも堪忍の尾が切れるってもんだぜ

890 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 04:16:13.07 ID:Ng8O1HeK0.net]
ら、ライブラリで実装できるから・・・。
ちなみに、プロパティっぽい提案は過去出てるが、全くテーブルに乗らない。

891 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 04:45:16.84 ID:xx4XvERn0.net]
誰もプロパティを欲していないのである

892 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 06:44:05.72 ID:izMMXIg60.net]
俺も欲しくない
コスト予測し辛杉デフ

893 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 07:38:47.09 ID:LRHKAKcy0.net]
C#はいい言語だよ
Linq便利だし

ただC++とは用途が違うってだけ



894 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 08:06:33.99 ID:qluMmKIH0.net]
何度聞いてもプロパティが欲しいという思いが沸かないんだが

895 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 08:10:21.70 ID:FDAIDKLE0.net]
ウィンドーズホンでネイティブC++とC++/CXの間を取り持つwrapperを書くのに使う
Wrapperを書くのに便利

896 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 10:37:15.71 ID:+tUOh99Na.net]
プロパティが使えたらMFCのような糞環境でUpdateDataを使わなくてよくなる

プロパティに代入で表示が変わり
プロパティからそのまま値が取り出せる

897 名前:デフォルトの名無しさん [2018/03/29(木) 10:39:27.42 ID:+dX3Weor0.net]
しかしVisual Studioは何だってUTF-8で保存されるのをそんなに嫌うんだろうか。
あの手この手でUTF-8で保存するのを妨害してくるけど。

898 名前:デフォルトの名無しさん [2018/03/29(木) 10:40:42.80 ID:+dX3Weor0.net]
VSで開発してLinuxに移植されるのを嫌がってるんだろうかね。
その割にはgdbと接続できるようにしてるし。

899 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 10:47:23.77 ID:Hc4kPWXM0.net]
>>870
ナイナイ
今だって setFoo() だの getFoo() だの実装すりゃできるけど初学者以外はやらないだろ?
実装するにも使うにも効率が悪いからね。

900 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 10:47:32.92 ID:+dsdqxPO0.net]
>>870
それはsetter/getterではできないことなんだな?

901 名前:デフォルトの名無しさん [2018/03/29(木) 10:57:10.36 ID:HNpF58Nud.net]
a.Hoge+=100;
みたいな事をできて便利だなと思うことはあるけど無けりゃないでいいわレベル

902 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 11:06:30.37 ID:q+sj+Afe0.net]
プロパティはメソッドともフィールドとも区別できるメタデータとしての活用が唯一の動機なんだが
結局のところ実行時の型システムまで整備しないととただの構文糖だしなあ

903 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 11:06:41.49 ID:+tUOh99Na.net]
>>874
A.Width+=20;

A.setWidth(A.getWidth()+20);

どっちがいい?;



904 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 11:10:04.25 ID:jtsbgEO5a.net]
>>877
後者の方が好きだな

905 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 11:14:39.59 ID:+tUOh99Na.net]
a.value++とかif(a.Width==100)とか
普通に書けるものをわざわざgetter setter書きたいんだな
変ってる

906 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 11:32:58.49 ID:Hc4kPWXM0.net]
UI とのバインディングを失笑されたら
シンタックスシュガーでこんなに楽にかける!と主張し始めたよw
そりゃ楽にかけて便利だよな。
そのためのものだもの。そこは同意する

907 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 11:35:30.24 ID:+tUOh99Na.net]
GUIだけじゃなくて他にも使えるというか
他がメイン

908 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 12:12:32.14 ID:xx4XvERn0.net]
>>879
そういう風にお手軽にメンバを書き換えるのは事故のもとなのでやめましょうってことでめんどくさくしたのに
戦争を知らない世代みたいな
現状でもa.value()++とかif(a.Width()==100)でできるしな
これまでのコードとの一貫性を破壊してなおかつ年代物のコンパイラに更に複雑なパースをさせて得られるものがちょっと括弧を省略するだけとは

909 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 12:14:06.74 ID:mREgEFijd.net]
プロパティのメリットは最初publicで適当に実装しといても後からgetter/setter付きのprivateに変えれる所じゃない?

910 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 12:18:25.09 ID:xx4XvERn0.net]
変数がない状態でもテストに通るように作るべきだからpublicで変数を持たせる機会が一瞬もない

911 名前:デフォルトの名無しさん [2018/03/29(木) 12:18:48.50 ID:+dX3Weor0.net]
C++builderってプロパティなかったっけ。
たいそう便利だったような気がするのだが、思い違いだろか。

912 名前:デフォルトの名無しさん [2018/03/29(木) 12:19:57.65 ID:+dX3Weor0.net]
そもそも最近のGUIビルダってC++ビルダーの影響受けまくってるような感じがする。

913 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 12:20:28.54 ID:ONnwnPbh0.net]
トップダウンで理想から考えるのが早い
どういう風に書ければ満足するんだ



914 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 12:26:29.79 ID:f5JOZCzba.net]
>>882
パースが面倒になるとは思えない
変数と同じ使い方なんだから変数のようにパースするだけだと思うが…

それにお前はコンパイラつくらないじゃん

915 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 12:28:52.39 ID:f5JOZCzba.net]
c++0x()以降の理念で仕様策定だけしたらいいじゃん
基本機能を妨げないように仕様追加

使うかどうかは本人次第
誰も強制しない

916 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 12:30:14.95 ID:f5JOZCzba.net]
拡張forもautoも馬鹿みたいに文句言ってたけど今でも使うなって言う人はいるのかな

917 名前:デフォルトの名無しさん [2018/03/29(木) 12:31:30.92 ID:+dX3Weor0.net]
使うな!

918 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 12:31:44.70 ID:f5JOZCzba.net]
わかりました使いません…

919 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 12:59:19.47 ID:mREgEFijd.net]
頭かったwwww

920 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 13:03:56.15 ID:xx4XvERn0.net]
>>888
これらを採択する人の中にGCCやMSVCの人がいないわけないじゃん
関数として扱うのか、変数として扱うのか決めなきゃいけない
そしてどうやってポインタをとるのかなど色々な問題がある
そしてさっきも言ったけど括弧を少し減らせるだけでできることが増えるわけじゃないというのが最大の問題

921 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 13:16:13.95 ID:f5JOZCzba.net]
得意げにご高説を垂れ流してる最中に申し訳ありませんが

a.value++;

a.value()++;
は別物
あえてみんなスルーしてくれてるのに

922 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 13:20:41.15 ID:ng76gyv10.net]
>>895
参照返しなら同じでは?

923 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 13:33:25.09 ID:f5JOZCzba.net]
ん?
参照した値を変えるとGUIの表示とか更新してくれんの?
getterとsetterあったとして実行してくれんの?

a.width()とa.widthが同じgetter的な動作してくれるのはわかるけど



924 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 13:38:37.15 ID:mREgEFijd.net]
アンチプロパティの人なんでそんなに必死なん?

925 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 13:47:08.78 ID:xx4XvERn0.net]
>>897
プロキシクラス

926 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 14:39:11.63 ID:BTFPAIj5d.net]
GUIの表示を更新するように作れば更新される

927 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 14:39:13.31 ID:DoW8QBEn0.net]
a.value()++; が参照返しとかどんだけヘボいんだよw
リファレンサのprvalueだろjk

928 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 15:02:55.47 ID:f5JOZCzba.net]
プロパティ不要とは言うけどそもそものプロパティの仕組みと効果はわかってないんだね
こんな人ばかり

929 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 15:57:57.60 ID:or4Xspy50.net]
何スレか前にもプロパティの議論あったんだけどね・・
少なくともgetter/setterを自動生成する、みたいなクソな機能ではないぞ

930 名前:はちみつ餃子 mailto:sage [2018/03/29(木) 16:02:08.91 ID:frx7qa9h0.net]
俺もそのとき発言してた
https://mevius.5ch.net/test/read.cgi/tech/1490917669/683

931 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 17:26:54.17 ID:T1PPEJjr0.net]
>>885
Builderだけtry-finallyセクション使えたり次元が違う希ガス

932 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 20:10:56.09 ID:LRHKAKcy0.net]
>>877
A.extendWidth(20);

それを書くことが便利で必要なクラスだったらそういう操作を作るべきだな

933 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 21:38:46.24 ID:1OB4BLGUM.net]
>>885
あったよ
>>905も含めて当時はネイティブコードを吐くC#みたいな感じだった
もう少し頑張れるかと思ったけど、Visual Studioの便利さに負けたと思ってる



934 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 21:46:54.75 ID:6IJhuxisM.net]
カーンを首にしてアプリ側に振ったのが敗因だったな
膨大なdbaseの資産も全く使えなかったのはNetaWareと
同じだった

935 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 01:25:11.99 ID:6elBmHqP0.net]
>>903
え、違うの?

936 名前:はちみつ餃子 mailto:sage [2018/03/30(金) 04:42:18.00 ID:AQ2aJRgB0.net]
>>909
違うよ。
デフォルトでのゲッタ/セッタを提供したりすることはあるけども、 >>904 で言及している通り「変数に見せかける」機能。

937 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 06:43:57.86 ID:MnRWcQoLM.net]
そもそも変数に見せかけると言うプロパティ自体の話とgetter/setterの自動生成の話は全く別物で>>903で比較してる意味がわからん
たぶん本人もちゃんと理解できてないんだろうな...

938 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 07:46:44.11 ID:QwXbOxz8M.net]
>>906
例えば座標なら+=使えた方が楽じゃね

939 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 08:33:24.78 ID:x9Ml4xAFM.net]
>>910
なんだそういうことか。それも含めて単なる自動生成だと認識してたよ。

940 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 08:34:01.73 ID:trt/A0j+0.net]
そうやってソフトが重くなって行くわけだな

数値の += なんて軽いと思って何度も呼んだら
実は描画や保存も何度も呼ばれてしまうとか

941 名前:デフォルトの名無しさん [2018/03/30(金) 08:42:16.05 ID:u8hlmR9G0.net]
それはプロパティに限った問題ではないな

942 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 08:45:16.06 ID:+sennHugd.net]
プロパティってそれ単体で取り出せるの?
それなら使えるな

943 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 08:52:02.87 ID:HVaF4kSpd.net]
呼ばれる側 : そんな何度も呼ばれるとは思わなかった
呼ぶ側 : 重いとは思わなかった



944 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 09:52:35.47 ID:mPLnga/50.net]
少なくともAdd()なら何かしらの関数を呼んでいることはわかる

945 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 11:31:23.82 ID:3ziE5qsO0.net]
プロパティでもなんらかの関数が含んでいることはわかるが

946 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 11:45:01.30 ID:mPLnga/50.net]
それがただの変数なのかプロパティなのかは調べるまでわからない

947 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 11:57:28.30 ID:27QTfa4qd.net]
調べろよ

948 名前:デフォルトの名無しさん [2018/03/30(金) 11:58:36.02 ID:u8hlmR9G0.net]
変数でも演算子がオーバーロードされてる場合もあるからな
結局調べないとダメ

949 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 12:01:32.59 ID:27QTfa4qd.net]
っていうか>>884いわく、publicな変数は有り得ないらしいし、そういう運用してるなら考えるまでもなくプロパティじゃん

950 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 15:53:31.37 ID:l98ixrSj0.net]
>>911
お前のレスの意味がわからん
実際C#もソースコード公開されてるソフトの改造程度にしか触ったことないんでちゃんと理解してないが
getter/setterの自動生成するだけのクソ機能と誤解してる人がこのスレでも前スレでも見られたから
>>903を書いただけなんだが

というか書き込む前の1〜2レスすら読めんのかお前は

951 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 17:21:54.28 ID:6y8tfNRe0.net]
C++erが通常prvalueで返しているリファレンサを、データメンバにするってことなら
テンポラリを作らなくなる分、速度的なメリットはありそうだな

# でも、俺はイヤだな
# データメンバがドカドカ増えるのがなんか気持ち悪い
# 慣れの問題っちゃそうかも知れんが

952 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 17:39:33.77 ID:+sennHugd.net]
>>899
言いたいことがわかった気がする

953 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 17:42:52.50 ID:HVaF4kSpd.net]
やっとかよ



954 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 20:19:26.33 ID:MnRWcQoLM.net]
>>924
だからそんな誤解してるのはお前と同レベルのバカだけだろ w
言語仕様の話とIDEの機能の区別もつかないアホなんて放置でいい

955 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 20:30:23.19 ID:3ziE5qsO0.net]
自分から絡んで行ってバカ呼ばわりとはこれいかに

956 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 20:51:58.09 ID:MnRWcQoLM.net]
またバカが絡んできたよ w

957 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 20:59:28.09 ID:l98ixrSj0.net]
>>928
いや、なんか根本的に誤解されてる気がするが
C#とかだと、多分プロパティ作ると自動である程度書いてくれるんだろうけど
その話じゃなくて「C++におけるpublicなGetXX(), SetXX()が暗黙的に作られる(だけ)」、みたいな誤解
(C#やBuilder知らずに議論をぱっと見するとそういう誤解しがち、俺も以前はしてたが)
があるんだよな
説明不足だったかもしれんけどIDEの支援機能の話ではない

というか前スレのリンクにあったブログの
ufcpp.net/study/csharp/oo_property.html?key=property#property
これが個人的にはわかりやすかった

958 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 21:21:54.96 ID:FlBD8vqz0.net]
Javaのイメージなのかな?
あれはJavaBeansとかいうゴミ規約のせいで本当にGetXX()とSetXX()を作るだけのゴミ機能がIDEに標準装備だったりする

959 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 21:27:33.97 ID:3ziE5qsO0.net]
まあプロパティある言語触ったことないやつは勉強不足だから無視していいって言うのは一理ある

960 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 21:59:35.93 ID:trt/A0j+0.net]
>>931
現状のメンバへの代入や値取得が
暗黙的に作られるgetter/setter

プロパティが採用されてもこの辺はなんら変わらないかと

961 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 22:16:15.58 ID:8D6duvwPM.net]
お前らの書き込み見ると、プロパティがものすごい大発明なんじゃないかと錯覚するけど
変数のようにかける件を含めても糖衣構文以上のものじゃないだろ。
+=したけりゃそういうプロキシ書けばいい。

962 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 22:21:10.98 ID:trt/A0j+0.net]
お前らってだれだよ
一人だけだろプロパティ信者

963 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 22:25:41.11 ID:trt/A0j+0.net]
これ以上言語機能を増やさなくて良い
コンパイラが規格に追い付いてなくて互換性が崩れる



964 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 22:28:08.90 ID:FlBD8vqz0.net]
クソ機能というわけではないが、ものすごく便利というわけでもない
あればあったで使うけど、ないならないで困らないし、言語設計として採用するしないの判断はどっちもあり
C++は採用しない判断をした

その程度の話

965 名前:デフォルトの名無しさん [2018/03/30(金) 23:12:27.73 .net]
実体が関数なら漢らしく見た目も関数にしろよwww

見た目が変数なのに処理が走るとか、見た目が割り算なのに文字列連結するとか変態野郎は死にくされやwwwww

966 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 23:32:31.76 ID:l98ixrSj0.net]
その辺はC++のコンストラクタ・デストラクタに嫌悪感を示すCユーザーが昔よく言ってた台詞と似てるw
「裏で何が起きてるかわかりづらいから嫌だ」、とかね
別に本気でプロパティ推してるわけじゃないが、いざプロキシクラスで代用しようとするとめんどい
ETなんかを仲介するとテンプレートの実体化の数でコンパイラへの負担がデカいし、
メンバ関数の呼び出しをサポートしようとすると継承が必要になるし・・・それなりに問題点はある

967 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 23:40:02.53 ID:vpP76l93d.net]
>>935
大発明じゃなくて、もはや常識。C++にはないって聞いて最初驚いたもん
いやまあたしかになくてもいいんだけど、演算子オーバロードはあるのにプロパティはないって変な言語だわ

968 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 23:41:38.85 ID:vpP76l93d.net]
>>939
それiostremディスってんの?

969 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 00:11:17.76 ID:o3PNwIlC0.net]
>>941
お前が驚くと凄いことなん?

970 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 00:12:18.16 ID:aFk+9CH40.net]
>>942
>>942はiostreamを擁護する気か

971 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 00:19:06.77 ID:iyPH7JTK0.net]
ダイヤモンド継承使われてるんだっけ
あれ使ったことないな
いらない機能だと思うなら使わないってだけだしプロパティはあった方がらくだと思うけどね
独自拡張でつけてるのもあるし

972 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 00:25:31.98 ID:NJ7AGlMvd.net]
>>943
凄くないよ
>>944
すまん。適当書いたけどiostremは擁護出来ねえわ

973 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 00:47:52.27 ID:C63IJ9vb0.net]
iostreamの<<チェーンが実は最近まで規格上未定義動作だった話は正直呆れた



974 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 01:02:47.99 ID:19OTzhSN0.net]
採択されてもプロパティのアドレスをどうやって取るのかっていうことで標準化委員会で揉めて10年は停滞する

975 名前:はちみつ餃子 mailto:sage [2018/03/31(土) 01:48:24.57 ID:nFIfPX7B0.net]
>>948
サブオブジェクトがユニークアドレスを取れなくてもいいことを示す [[no_unique_address]] 属性が C++20 のドラフトに入った。
www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0840r1.html
オブジェクトがユニークなアドレスを持つ原則を捨てたわけ。

これを踏襲するなら、プロパティのアドレスは取れないってことにして解決するのが自然で、揉める余地はそんなにないと思う。
実際にアドレスは存在しないわけだし、存在しないものを返しようがないじゃん。

976 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 02:09:16.31 ID:19OTzhSN0.net]
>>949
最初のプロパティの提案がいつかはしらないけど
実際にこれが決まったとして最短で2020年
そこから更に何年かかるのか

977 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 04:29:43.55 ID:O6Ruc86y0.net]
抽象クラス"Super"から派生した子クラス、"A", "B", "C"があったとします。

Super* obj1 = new A();
Super* obj2 = new B();
Super* obj3 = new C();

訳あって動的に作成したインスタンスobj1〜3を一度deleteしたのち
再び同じ子クラスでインスタンスを作成しようと思います。

obj2がクラスBのインスタンスであることが一目で分からない場合に
obj2がクラスBのインスタンスであることを突き止め、一度deleteし、
再度クラスBでインスタンスを作成する方法はあるでしょうか?

ちなみに必死に考えて考えついた方法ですが
クラスA, B, Cにそれぞれ「私はAクラスです」「私はBクラスです」みたいな
文字列を出力する共通メソッドをpublicで作成し、そのメソッドを実行して
帰ってきた文字列からそれがどのクラスのインスタンスか判別が付くのではないかなと思いました。
決してスマートな方法とは言えませんが・・・

もっとスマートな方法はありますか?

978 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 04:37:13.22 ID:350O8bDz0.net]
・・・?
typeidじゃアカンの?

979 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 05:55:27.21 ID:15qJIIAA0.net]
class B : public Super
{
public:
Super* re_new() override
{
delete this;
return new B{};
}
};

980 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 06:37:47.25 ID:C63IJ9vb0.net]
>>949
単純に &obj.int_prop と書いた時に、この式の型と値をどうするかは難しい問題じゃない?
intの一時オブジェクトへのポインタ、intのぬるぽ、int_propのgetterへの関数メンバポインタ、ill-formed
どれも問題あると思う

981 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 06:47:39.87 ID:8va89mAu0.net]
プロパティを関数として実装したら関数のアドレスは取れるんじゃないかなぁ。はぁ、実装依存ですか。

982 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 08:02:21.38 ID:5h07DQhTa.net]
>>951
全然スマートじゃないがvisitorパターン使えば?

983 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 09:03:59.00 ID:OaeapR1O0.net]
>>954
> 単純に &obj.int_prop と書いた時に、この式の型と値をどうするかは難しい問題じゃない?
エラーにしちゃえばいいだろ



984 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 09:14:46.66 ID:HGehdmya0.net]
つまり意識しなきゃならんてことか
じゃあ素直に関数にしろよ

985 名前:はちみつ餃子 mailto:sage [2018/03/31(土) 09:16:04.32 ID:nFIfPX7B0.net]
>>954
一時オブジェクトへのポインタってことにする一択だと思うけどなぁ。

あくまでも「変数に見せかける」、
つまりは、ゲッタの呼出しに構文糖を付けて見かけ上だけ変数 (データメンバ) っぽいって立場を貫かないと、
余計な気を回してもわかり難さが増すだけだよ。
rvalue なのは仕方がない。

986 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 09:16:21.25 ID:Nj0xu+770.net]
どうしてアドレスを取りたがるのかよくわからない
クラスのメンバ関数だってアドレス取れないだろ

987 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 09:18:00.18 ID:Nj0xu+770.net]
ああメンバ仮想関数な

988 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 09:18:37.44 ID:8va89mAu0.net]
>>960
メンバ関数のポインタ構文が何故あるのですか?

989 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 09:18:44.11 ID:8va89mAu0.net]
あー。

990 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 09:22:26.84 ID:Nj0xu+770.net]
訂正しただろ
仮想関数はアドレスが取れないだろ

991 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 09:23:29.95 ID:15qJIIAA0.net]
取れるよ、何言ってんの
そのポインタは動的結合までできる優れもの

992 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 09:25:45.36 ID:Nj0xu+770.net]
出来ないよ
何いってんの

993 名前:はちみつ餃子 mailto:sage [2018/03/31(土) 09:26:00.49 ID:nFIfPX7B0.net]
>>960
変数に見せかける以上は変数と同じようにふるまうことを期待するってのは普通の要求じゃないか?
データメンバに対して操作するテンプレートはプロパティを操作するテンプレートとしても使えて欲しい。
でもまあ充分に「見せかける」ことが出来ないのなら問答無用でエラーになった方がマシではあるかもしれん。



994 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 09:41:17.12 ID:C63IJ9vb0.net]
objがlvalueなのにobj.int_propがrvalueになるのはまずいと思うんだよなあ
うっかり関数の戻り値でその参照なんか返そうものなら相当わかりにくいバグになる
C#とかはその辺の問題どう解決してるのかしらね

995 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 09:48:31.98 ID:Nj0xu+770.net]
property int count {
>>() {return count_ ; } // getter
<<(int cnt) {SetCount(cnt):} // setter
&() {return &count_;} // address getter
};
みたいにアドレス抽出用のメソッドを追加すりゃ良いだけのような気がする

996 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 10:00:37.36 ID:HGehdmya0.net]
コードを減らす為の規格追加でコードを増やす解決法

う〜ん

997 名前:はちみつ餃子 mailto:sage [2018/03/31(土) 10:21:02.77 ID:nFIfPX7B0.net]
>>970
これは抽象化の話なんだよ。
変数のように見せかけるためには何が必要かって話なの。

998 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 10:29:50.12 ID:15qJIIAA0.net]
>>966
https://ideone.com/1J8uwf

999 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 10:35:19.80 ID:Nj0xu+770.net]
property int count {
() {return count_ ; } // getter
=(int cnt) {SetCount(cnt):} // setter
&() {return &count_;} // address getter
++() {return ++count; } // incrementer
}
この方がしっくり来るな

1000 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 10:56:40.26 ID:aygih7Tkd.net]
予約語を増やすとどれだけの影響があるか
なんて考えたことはないのかな?

1001 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 10:57:47.19 ID:aygih7Tkd.net]
まあここはC++相談室
おれが考えた最強言語を語るところじゃない

1002 名前:はちみつ餃子 mailto:sage [2018/03/31(土) 11:05:17.81 ID:nFIfPX7B0.net]
opaque definition でゲッタを定義できるように拡張すればプロパティ専用の構文を導入する必要なく
プロパティを実現できるのではないかと妄想していた。

1003 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 11:10:24.41 ID:Nj0xu+770.net]
using count = int {
() {return count_ ; } // getter
=(int cnt) {SetCount(cnt):} // setter
&() {return &count_;} // address getter
++() {return ++count; } // incrementer
};
予約語増やさないならこんな感じに書けなくもない



1004 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 11:21:25.52 ID:Pb+ZodvD0.net]
プロパティの実装の議論までここでするか?
Dと同じでいいじゃん

1005 名前:はちみつ餃子 mailto:sage [2018/03/31(土) 11:23:19.53 ID:nFIfPX7B0.net]
前提が違うものを同じには出来ないよ。
参考にすることはあると思うけど。

1006 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 12:19:04.21 ID:+mjd8c8id.net]
仮想関数のアドレスが取れないという発言は何だったんだろう

1007 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 13:29:05.67 ID:19OTzhSN0.net]
>>951
std::pair<Super*,std::string> obj2 = std::make_pair(new B(), "ClassB");

1008 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 13:32:44.21 ID:aygih7Tkd.net]
スレチ
次スレまで引きずるなよ

1009 名前:デフォルトの名無しさん [2018/03/31(土) 13:50:16.75 .net]
>>951
クラスA, B, Cにそれぞれ自分自身のインスタンスを生成するstaticメソッドを用意し、
そのstaticメソッドへのポインタを返す共通メソッドを用意する。

1010 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 14:23:30.31 ID:aFk+9CH40.net]
リフレクションがある言語でGUIの画面またはユーザーコントロール

1011 名前:作成する際に
YSIWYGで作ることをやれるIDEを作りたい、というときに、メンバー関数とプロパティーの2種類あったら便利なのや

C++にプロパティー入れたらリフレクションも来るでこれは…

もっとも上記課題解決のための技術は10年も前にWPFの登場で丸ごと過去の技術やがな…
[]
[ここ壊れてます]

1012 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 14:30:32.65 ID:aFk+9CH40.net]
ていうかWPFのコンバーターの書き方とか、メンバ関数に逆戻りやぞ…
(IValueConverter.Convert(), IValueConverter.ConvertBack(),
 IMultiValueConverter.Conver(), IMultiValueConverter.ConvertBack(), ...

1013 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 15:43:53.79 ID:UG1yVXDXa.net]
リフレクションはゴミとまで言わないけどc++にはいらない機能



1014 名前:デフォルトの名無しさん [2018/03/31(土) 16:09:17.20 ID:D1vbg0pQ0.net]
リフレクションがあれば死なずに済んだ人もいるだろうに。

1015 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 16:37:26.06 ID:UG1yVXDXa.net]
デバッグでリフレクション使うのか?

1016 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 20:24:42.16 ID:o3PNwIlC0.net]
C++相談室 part135
mevius.5ch.net/test/read.cgi/tech/1522495206/

もう糞テンプレいらないよね?
あと死ね

1017 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 22:27:57.63 ID:u+oLKOIo0.net]
うむごくろう。

1018 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 18:13:20.31 ID:JVL2cf0wa.net]
c++のfriendはprivateメンバーすべてにアクセスできてしまうけど特定の変数だけ、もしくは特定の関数だけfriendにする事は可能でしょうか?

1019 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 18:43:04.30 ID:nEv6CmIlM.net]
>>991
ピンプるか、○○って俺の友達の友達なんだぜーにしてしまうか、かなー

1020 名前:デフォルトの名無しさん [2018/04/01(日) 19:11:40.34 ID:BG5JJopwa.net]
pimplイデオムはなんとなくわかるけど、俺の友達の友達は編集したい対象を別のクラスに分けてしまうこと?

1021 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 20:21:44.04 ID:WPbk7cUz0.net]
そういえばシステムハンガリアンはしばしば批判されるのに、pimplのpは批判されているのを見たことがないな。

1022 名前:はちみつ餃子 mailto:sage [2018/04/01(日) 21:12:28.11 ID:47FEpc5z0.net]
https://www.google.com/search?q=%E5%8D%8A%E5%88%88%E3%82%8A&tbm=isch

1023 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 22:32:25.37 ID:EwuQ9U5u0.net]
(餃子が (御乱心 (されたぞー)))



1024 名前:はちみつ餃子 mailto:sage [2018/04/01(日) 23:03:08.00 ID:47FEpc5z0.net]
>>996
そこは「ハンガリアンじゃなくて半刈りやん」って言って欲しかった。

1025 名前:デフォルトの名無しさん mailto:sage [2018/04/02(月) 07:54:09.78 ID:t04teqlda.net]
いやいやこんなの丸刈りやん

1026 名前:デフォルトの名無しさん mailto:sage [2018/04/02(月) 09:36:33.18 ID:E1iWIfmB0.net]
>>984
YSIWYGってなに?

1027 名前:デフォルトの名無しさん [2018/04/02(月) 11:52:25.29 .net]
>>999
WYSIWYGのtypoなだけやん
アスペか

1028 名前:デフォルトの名無しさん mailto:sage [2018/04/02(月) 12:50:23.03 ID:E1iWIfmB0.net]
訂正だろ? 態度悪いなおまえ

1029 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 72日 3時間 44分 41秒

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






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

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

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