次スレを立てる時は本文の1行目に以下を追加して下さい。
!extend:on:vvvvv:1000:512
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。
前スレ
C++相談室 part133
http://mevius.5ch.net/test/read.cgi/tech/1511509970/
このスレもよろしくね。
【初心者歓迎】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
C++相談室 part134
レス数が1000を超えています。これ以上書き込みはできません。
1デフォルトの名無しさん (ワッチョイ 5fcb-Q2eK)
2018/01/20(土) 09:05:42.21ID:mJKRg6iz0945デフォルトの名無しさん (スフッ Sdb3-VlFK)
2018/03/31(土) 00:25:31.98ID:NJ7AGlMvd946デフォルトの名無しさん (ワッチョイ 5be7-Cooj)
2018/03/31(土) 00:47:52.27ID:C63IJ9vb0 iostreamの<<チェーンが実は最近まで規格上未定義動作だった話は正直呆れた
947デフォルトの名無しさん (ワッチョイ b37e-YG9/)
2018/03/31(土) 01:02:47.99ID:19OTzhSN0 採択されてもプロパティのアドレスをどうやって取るのかっていうことで標準化委員会で揉めて10年は停滞する
948はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5b6f-kUw7)
2018/03/31(土) 01:48:24.57ID:nFIfPX7B0 >>947
サブオブジェクトがユニークアドレスを取れなくてもいいことを示す [[no_unique_address]] 属性が C++20 のドラフトに入った。
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0840r1.html
オブジェクトがユニークなアドレスを持つ原則を捨てたわけ。
これを踏襲するなら、プロパティのアドレスは取れないってことにして解決するのが自然で、揉める余地はそんなにないと思う。
実際にアドレスは存在しないわけだし、存在しないものを返しようがないじゃん。
サブオブジェクトがユニークアドレスを取れなくてもいいことを示す [[no_unique_address]] 属性が C++20 のドラフトに入った。
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0840r1.html
オブジェクトがユニークなアドレスを持つ原則を捨てたわけ。
これを踏襲するなら、プロパティのアドレスは取れないってことにして解決するのが自然で、揉める余地はそんなにないと思う。
実際にアドレスは存在しないわけだし、存在しないものを返しようがないじゃん。
949デフォルトの名無しさん (ワッチョイ b37e-YG9/)
2018/03/31(土) 02:09:16.31ID:19OTzhSN0950デフォルトの名無しさん (ワッチョイ 9368-uaFS)
2018/03/31(土) 04:29:43.55ID:O6Ruc86y0 抽象クラス"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で作成し、そのメソッドを実行して
帰ってきた文字列からそれがどのクラスのインスタンスか判別が付くのではないかなと思いました。
決してスマートな方法とは言えませんが・・・
もっとスマートな方法はありますか?
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で作成し、そのメソッドを実行して
帰ってきた文字列からそれがどのクラスのインスタンスか判別が付くのではないかなと思いました。
決してスマートな方法とは言えませんが・・・
もっとスマートな方法はありますか?
951デフォルトの名無しさん (ワッチョイ db0e-uaFS)
2018/03/31(土) 04:37:13.22ID:350O8bDz0 ・・・?
typeidじゃアカンの?
typeidじゃアカンの?
952デフォルトの名無しさん (ワッチョイ 1908-kUw7)
2018/03/31(土) 05:55:27.21ID:15qJIIAA0 class B : public Super
{
public:
Super* re_new() override
{
delete this;
return new B{};
}
};
{
public:
Super* re_new() override
{
delete this;
return new B{};
}
};
953デフォルトの名無しさん (ワッチョイ 5be7-Cooj)
2018/03/31(土) 06:37:47.25ID:C63IJ9vb0 >>948
単純に &obj.int_prop と書いた時に、この式の型と値をどうするかは難しい問題じゃない?
intの一時オブジェクトへのポインタ、intのぬるぽ、int_propのgetterへの関数メンバポインタ、ill-formed
どれも問題あると思う
単純に &obj.int_prop と書いた時に、この式の型と値をどうするかは難しい問題じゃない?
intの一時オブジェクトへのポインタ、intのぬるぽ、int_propのgetterへの関数メンバポインタ、ill-formed
どれも問題あると思う
954デフォルトの名無しさん (ワッチョイ 4104-2GNe)
2018/03/31(土) 06:47:39.87ID:8va89mAu0 プロパティを関数として実装したら関数のアドレスは取れるんじゃないかなぁ。はぁ、実装依存ですか。
955デフォルトの名無しさん (アウアウカー Sadd-LLtt)
2018/03/31(土) 08:02:21.38ID:5h07DQhTa >>950
全然スマートじゃないがvisitorパターン使えば?
全然スマートじゃないがvisitorパターン使えば?
956デフォルトの名無しさん (ワッチョイ 93b3-PArs)
2018/03/31(土) 09:03:59.00ID:OaeapR1O0957デフォルトの名無しさん (ワッチョイ 4150-W7mk)
2018/03/31(土) 09:14:46.66ID:HGehdmya0 つまり意識しなきゃならんてことか
じゃあ素直に関数にしろよ
じゃあ素直に関数にしろよ
958はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5b6f-kUw7)
2018/03/31(土) 09:16:04.32ID:nFIfPX7B0 >>953
一時オブジェクトへのポインタってことにする一択だと思うけどなぁ。
あくまでも「変数に見せかける」、
つまりは、ゲッタの呼出しに構文糖を付けて見かけ上だけ変数 (データメンバ) っぽいって立場を貫かないと、
余計な気を回してもわかり難さが増すだけだよ。
rvalue なのは仕方がない。
一時オブジェクトへのポインタってことにする一択だと思うけどなぁ。
あくまでも「変数に見せかける」、
つまりは、ゲッタの呼出しに構文糖を付けて見かけ上だけ変数 (データメンバ) っぽいって立場を貫かないと、
余計な気を回してもわかり難さが増すだけだよ。
rvalue なのは仕方がない。
959デフォルトの名無しさん (ワッチョイ 9334-3URi)
2018/03/31(土) 09:16:21.25ID:Nj0xu+770 どうしてアドレスを取りたがるのかよくわからない
クラスのメンバ関数だってアドレス取れないだろ
クラスのメンバ関数だってアドレス取れないだろ
960デフォルトの名無しさん (ワッチョイ 9334-3URi)
2018/03/31(土) 09:18:00.18ID:Nj0xu+770 ああメンバ仮想関数な
961デフォルトの名無しさん (ワッチョイ 4104-2GNe)
2018/03/31(土) 09:18:37.44ID:8va89mAu0 >>959
メンバ関数のポインタ構文が何故あるのですか?
メンバ関数のポインタ構文が何故あるのですか?
962デフォルトの名無しさん (ワッチョイ 4104-2GNe)
2018/03/31(土) 09:18:44.11ID:8va89mAu0 あー。
963デフォルトの名無しさん (ワッチョイ 9334-3URi)
2018/03/31(土) 09:22:26.84ID:Nj0xu+770 訂正しただろ
仮想関数はアドレスが取れないだろ
仮想関数はアドレスが取れないだろ
964デフォルトの名無しさん (ワッチョイ 1908-kUw7)
2018/03/31(土) 09:23:29.95ID:15qJIIAA0 取れるよ、何言ってんの
そのポインタは動的結合までできる優れもの
そのポインタは動的結合までできる優れもの
965デフォルトの名無しさん (ワッチョイ 9334-3URi)
2018/03/31(土) 09:25:45.36ID:Nj0xu+770 出来ないよ
何いってんの
何いってんの
966はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5b6f-kUw7)
2018/03/31(土) 09:26:00.49ID:nFIfPX7B0 >>959
変数に見せかける以上は変数と同じようにふるまうことを期待するってのは普通の要求じゃないか?
データメンバに対して操作するテンプレートはプロパティを操作するテンプレートとしても使えて欲しい。
でもまあ充分に「見せかける」ことが出来ないのなら問答無用でエラーになった方がマシではあるかもしれん。
変数に見せかける以上は変数と同じようにふるまうことを期待するってのは普通の要求じゃないか?
データメンバに対して操作するテンプレートはプロパティを操作するテンプレートとしても使えて欲しい。
でもまあ充分に「見せかける」ことが出来ないのなら問答無用でエラーになった方がマシではあるかもしれん。
967デフォルトの名無しさん (ワッチョイ 5be7-Cooj)
2018/03/31(土) 09:41:17.12ID:C63IJ9vb0 objがlvalueなのにobj.int_propがrvalueになるのはまずいと思うんだよなあ
うっかり関数の戻り値でその参照なんか返そうものなら相当わかりにくいバグになる
C#とかはその辺の問題どう解決してるのかしらね
うっかり関数の戻り値でその参照なんか返そうものなら相当わかりにくいバグになる
C#とかはその辺の問題どう解決してるのかしらね
968デフォルトの名無しさん (ワッチョイ 9334-3URi)
2018/03/31(土) 09:48:31.98ID:Nj0xu+770 property int count {
>>() {return count_ ; } // getter
<<(int cnt) {SetCount(cnt):} // setter
&() {return &count_;} // address getter
};
みたいにアドレス抽出用のメソッドを追加すりゃ良いだけのような気がする
>>() {return count_ ; } // getter
<<(int cnt) {SetCount(cnt):} // setter
&() {return &count_;} // address getter
};
みたいにアドレス抽出用のメソッドを追加すりゃ良いだけのような気がする
969デフォルトの名無しさん (ワッチョイ 4150-W7mk)
2018/03/31(土) 10:00:37.36ID:HGehdmya0 コードを減らす為の規格追加でコードを増やす解決法
う〜ん
う〜ん
970はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5b6f-kUw7)
2018/03/31(土) 10:21:02.77ID:nFIfPX7B0971デフォルトの名無しさん (ワッチョイ 1908-kUw7)
2018/03/31(土) 10:29:50.12ID:15qJIIAA0972デフォルトの名無しさん (ワッチョイ 9334-3URi)
2018/03/31(土) 10:35:19.80ID:Nj0xu+770 property int count {
() {return count_ ; } // getter
=(int cnt) {SetCount(cnt):} // setter
&() {return &count_;} // address getter
++() {return ++count; } // incrementer
}
この方がしっくり来るな
() {return count_ ; } // getter
=(int cnt) {SetCount(cnt):} // setter
&() {return &count_;} // address getter
++() {return ++count; } // incrementer
}
この方がしっくり来るな
973デフォルトの名無しさん (スップ Sdb3-W7mk)
2018/03/31(土) 10:56:40.26ID:aygih7Tkd 予約語を増やすとどれだけの影響があるか
なんて考えたことはないのかな?
なんて考えたことはないのかな?
974デフォルトの名無しさん (スップ Sdb3-W7mk)
2018/03/31(土) 10:57:47.19ID:aygih7Tkd まあここはC++相談室
おれが考えた最強言語を語るところじゃない
おれが考えた最強言語を語るところじゃない
975はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5b6f-kUw7)
2018/03/31(土) 11:05:17.81ID:nFIfPX7B0 opaque definition でゲッタを定義できるように拡張すればプロパティ専用の構文を導入する必要なく
プロパティを実現できるのではないかと妄想していた。
プロパティを実現できるのではないかと妄想していた。
976デフォルトの名無しさん (ワッチョイ 9334-3URi)
2018/03/31(土) 11:10:24.41ID:Nj0xu+770 using count = int {
() {return count_ ; } // getter
=(int cnt) {SetCount(cnt):} // setter
&() {return &count_;} // address getter
++() {return ++count; } // incrementer
};
予約語増やさないならこんな感じに書けなくもない
() {return count_ ; } // getter
=(int cnt) {SetCount(cnt):} // setter
&() {return &count_;} // address getter
++() {return ++count; } // incrementer
};
予約語増やさないならこんな感じに書けなくもない
977デフォルトの名無しさん (ワッチョイ 5be9-VlFK)
2018/03/31(土) 11:21:25.52ID:Pb+ZodvD0 プロパティの実装の議論までここでするか?
Dと同じでいいじゃん
Dと同じでいいじゃん
978はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5b6f-kUw7)
2018/03/31(土) 11:23:19.53ID:nFIfPX7B0 前提が違うものを同じには出来ないよ。
参考にすることはあると思うけど。
参考にすることはあると思うけど。
979デフォルトの名無しさん (スップ Sdf3-qGf7)
2018/03/31(土) 12:19:04.21ID:+mjd8c8id 仮想関数のアドレスが取れないという発言は何だったんだろう
980デフォルトの名無しさん (ワッチョイ b37e-YG9/)
2018/03/31(土) 13:29:05.67ID:19OTzhSN0 >>950
std::pair<Super*,std::string> obj2 = std::make_pair(new B(), "ClassB");
std::pair<Super*,std::string> obj2 = std::make_pair(new B(), "ClassB");
981デフォルトの名無しさん (スップ Sdb3-W7mk)
2018/03/31(土) 13:32:44.21ID:aygih7Tkd スレチ
次スレまで引きずるなよ
次スレまで引きずるなよ
982デフォルトの名無しさん
2018/03/31(土) 13:50:16.75983デフォルトの名無しさん (ワッチョイ d3bd-qsUw)
2018/03/31(土) 14:23:30.31ID:aFk+9CH40 リフレクションがある言語でGUIの画面またはユーザーコントロールを作成する際に
YSIWYGで作ることをやれるIDEを作りたい、というときに、メンバー関数とプロパティーの2種類あったら便利なのや
C++にプロパティー入れたらリフレクションも来るでこれは…
もっとも上記課題解決のための技術は10年も前にWPFの登場で丸ごと過去の技術やがな…
YSIWYGで作ることをやれるIDEを作りたい、というときに、メンバー関数とプロパティーの2種類あったら便利なのや
C++にプロパティー入れたらリフレクションも来るでこれは…
もっとも上記課題解決のための技術は10年も前にWPFの登場で丸ごと過去の技術やがな…
984デフォルトの名無しさん (ワッチョイ d3bd-qsUw)
2018/03/31(土) 14:30:32.65ID:aFk+9CH40 ていうかWPFのコンバーターの書き方とか、メンバ関数に逆戻りやぞ…
(IValueConverter.Convert(), IValueConverter.ConvertBack(),
IMultiValueConverter.Conver(), IMultiValueConverter.ConvertBack(), ...
(IValueConverter.Convert(), IValueConverter.ConvertBack(),
IMultiValueConverter.Conver(), IMultiValueConverter.ConvertBack(), ...
985デフォルトの名無しさん (アウアウウー Sa45-uaFS)
2018/03/31(土) 15:43:53.79ID:UG1yVXDXa リフレクションはゴミとまで言わないけどc++にはいらない機能
986デフォルトの名無しさん (ワッチョイ d180-3UCh)
2018/03/31(土) 16:09:17.20ID:D1vbg0pQ0 リフレクションがあれば死なずに済んだ人もいるだろうに。
987デフォルトの名無しさん (アウアウウー Sa45-uaFS)
2018/03/31(土) 16:37:26.06ID:UG1yVXDXa デバッグでリフレクション使うのか?
988デフォルトの名無しさん (ワッチョイ d3cb-q1Nq)
2018/03/31(土) 20:24:42.16ID:o3PNwIlC0989デフォルトの名無しさん (ワッチョイ 9380-V9Xo)
2018/03/31(土) 22:27:57.63ID:u+oLKOIo0 うむごくろう。
990デフォルトの名無しさん (アウアウカー Sadd-LLtt)
2018/04/01(日) 18:13:20.31ID:JVL2cf0wa c++のfriendはprivateメンバーすべてにアクセスできてしまうけど特定の変数だけ、もしくは特定の関数だけfriendにする事は可能でしょうか?
991デフォルトの名無しさん (ブーイモ MMab-q1Nq)
2018/04/01(日) 18:43:04.30ID:nEv6CmIlM >>990
ピンプるか、○○って俺の友達の友達なんだぜーにしてしまうか、かなー
ピンプるか、○○って俺の友達の友達なんだぜーにしてしまうか、かなー
992デフォルトの名無しさん (アウアウウー Sa45-HAdz)
2018/04/01(日) 19:11:40.34ID:BG5JJopwa pimplイデオムはなんとなくわかるけど、俺の友達の友達は編集したい対象を別のクラスに分けてしまうこと?
993デフォルトの名無しさん (ワッチョイ c1f2-kUw7)
2018/04/01(日) 20:21:44.04ID:WPbk7cUz0 そういえばシステムハンガリアンはしばしば批判されるのに、pimplのpは批判されているのを見たことがないな。
994はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5b6f-kUw7)
2018/04/01(日) 21:12:28.11ID:47FEpc5z0995デフォルトの名無しさん (ワッチョイ d3cb-q1Nq)
2018/04/01(日) 22:32:25.37ID:EwuQ9U5u0 (餃子が (御乱心 (されたぞー)))
996はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5b6f-kUw7)
2018/04/01(日) 23:03:08.00ID:47FEpc5z0 >>995
そこは「ハンガリアンじゃなくて半刈りやん」って言って欲しかった。
そこは「ハンガリアンじゃなくて半刈りやん」って言って欲しかった。
997デフォルトの名無しさん (アウアウカー Sadd-LLtt)
2018/04/02(月) 07:54:09.78ID:t04teqlda いやいやこんなの丸刈りやん
998デフォルトの名無しさん (ワッチョイ 19bd-kUw7)
2018/04/02(月) 09:36:33.18ID:E1iWIfmB0 >>983
YSIWYGってなに?
YSIWYGってなに?
999デフォルトの名無しさん
2018/04/02(月) 11:52:25.291000デフォルトの名無しさん (ワッチョイ 19bd-kUw7)
2018/04/02(月) 12:50:23.03ID:E1iWIfmB0 訂正だろ? 態度悪いなおまえ
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 72日 3時間 44分 41秒
新しいスレッドを立ててください。
life time: 72日 3時間 44分 41秒
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 特攻機と同じ名称「桜花中」、福岡・大牟田市の新設中学校名に異論 市民団体が再考申し入れ ★2 [少考さん★]
- 中国からの留学中止相次ぐ 中国外務省「日本の治安が悪化」 [♪♪♪★]
- 日中関係改善は「下手をすると10年かかる」 トランプを全面信頼できない高市官邸の苦悩 [ぐれ★]
- 町山智浩「日本のパンダ経済効果は308億円」…「…いらない」と言ってる人達は、パンダで暮らす人々の損害補填してくれるのか…と問う★2 [少考さん★]
- 「育休もらい逃げ」はずるい?🤔職場復帰しないで辞めるはアリかナシか [パンナ・コッタ★]
- こども家庭庁、2026年から“独身税”を開始、年収200万なら年4200円、年収400万なら年7800円 ★8 [お断り★]
- ヒロミ「パンダがいなくなる状況でも高市支持は高い。皆、我慢すべきという雰囲気がある」 [834922174]
- ぢばるいる?
- テレビ局「なんでお前ら、テレビ見なくなっちゃったの;;」 [161547316]
- ( ・᷄ὢ・᷅ )あぁん?あんかけチャーハン?
- 【高市速報】デヴィ夫人「中国の暴虐に対し、日本の方々よ、全員で戦いましょう」😮 [518915984]
- 【朗報】国産AIモデルの開発を官民一体で行うことが決定!日本の高い倫理観を活かしていくとのこと! [673057929]
