C++相談室 part134

レス数が1000を超えています。これ以上書き込みはできません。
2018/01/20(土) 09:05:42.21ID:mJKRg6iz0
次スレを立てる時は本文の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
2018/03/31(土) 05:55:27.21ID:15qJIIAA0
class B : public Super
{
public:
Super* re_new() override
{
delete this;
return new B{};
}
};
2018/03/31(土) 06:37:47.25ID:C63IJ9vb0
>>948
単純に &obj.int_prop と書いた時に、この式の型と値をどうするかは難しい問題じゃない?
intの一時オブジェクトへのポインタ、intのぬるぽ、int_propのgetterへの関数メンバポインタ、ill-formed
どれも問題あると思う
2018/03/31(土) 06:47:39.87ID:8va89mAu0
プロパティを関数として実装したら関数のアドレスは取れるんじゃないかなぁ。はぁ、実装依存ですか。
2018/03/31(土) 08:02:21.38ID:5h07DQhTa
>>950
全然スマートじゃないがvisitorパターン使えば?
2018/03/31(土) 09:03:59.00ID:OaeapR1O0
>>953
> 単純に &obj.int_prop と書いた時に、この式の型と値をどうするかは難しい問題じゃない?
エラーにしちゃえばいいだろ
2018/03/31(土) 09:14:46.66ID:HGehdmya0
つまり意識しなきゃならんてことか
じゃあ素直に関数にしろよ
2018/03/31(土) 09:16:04.32ID:nFIfPX7B0
>>953
一時オブジェクトへのポインタってことにする一択だと思うけどなぁ。

あくまでも「変数に見せかける」、
つまりは、ゲッタの呼出しに構文糖を付けて見かけ上だけ変数 (データメンバ) っぽいって立場を貫かないと、
余計な気を回してもわかり難さが増すだけだよ。
rvalue なのは仕方がない。
2018/03/31(土) 09:16:21.25ID:Nj0xu+770
どうしてアドレスを取りたがるのかよくわからない
クラスのメンバ関数だってアドレス取れないだろ
2018/03/31(土) 09:18:00.18ID:Nj0xu+770
ああメンバ仮想関数な
2018/03/31(土) 09:18:37.44ID:8va89mAu0
>>959
メンバ関数のポインタ構文が何故あるのですか?
2018/03/31(土) 09:18:44.11ID:8va89mAu0
あー。
2018/03/31(土) 09:22:26.84ID:Nj0xu+770
訂正しただろ
仮想関数はアドレスが取れないだろ
2018/03/31(土) 09:23:29.95ID:15qJIIAA0
取れるよ、何言ってんの
そのポインタは動的結合までできる優れもの
2018/03/31(土) 09:25:45.36ID:Nj0xu+770
出来ないよ
何いってんの
2018/03/31(土) 09:26:00.49ID:nFIfPX7B0
>>959
変数に見せかける以上は変数と同じようにふるまうことを期待するってのは普通の要求じゃないか?
データメンバに対して操作するテンプレートはプロパティを操作するテンプレートとしても使えて欲しい。
でもまあ充分に「見せかける」ことが出来ないのなら問答無用でエラーになった方がマシではあるかもしれん。
2018/03/31(土) 09:41:17.12ID:C63IJ9vb0
objがlvalueなのにobj.int_propがrvalueになるのはまずいと思うんだよなあ
うっかり関数の戻り値でその参照なんか返そうものなら相当わかりにくいバグになる
C#とかはその辺の問題どう解決してるのかしらね
2018/03/31(土) 09:48:31.98ID:Nj0xu+770
property int count {
>>() {return count_ ; } // getter
<<(int cnt) {SetCount(cnt):} // setter
&() {return &count_;} // address getter
};
みたいにアドレス抽出用のメソッドを追加すりゃ良いだけのような気がする
2018/03/31(土) 10:00:37.36ID:HGehdmya0
コードを減らす為の規格追加でコードを増やす解決法

う〜ん
2018/03/31(土) 10:21:02.77ID:nFIfPX7B0
>>969
これは抽象化の話なんだよ。
変数のように見せかけるためには何が必要かって話なの。
2018/03/31(土) 10:29:50.12ID:15qJIIAA0
>>965
https://ideone.com/1J8uwf
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
}
この方がしっくり来るな
2018/03/31(土) 10:56:40.26ID:aygih7Tkd
予約語を増やすとどれだけの影響があるか
なんて考えたことはないのかな?
2018/03/31(土) 10:57:47.19ID:aygih7Tkd
まあここはC++相談室
おれが考えた最強言語を語るところじゃない
2018/03/31(土) 11:05:17.81ID:nFIfPX7B0
opaque definition でゲッタを定義できるように拡張すればプロパティ専用の構文を導入する必要なく
プロパティを実現できるのではないかと妄想していた。
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
};
予約語増やさないならこんな感じに書けなくもない
2018/03/31(土) 11:21:25.52ID:Pb+ZodvD0
プロパティの実装の議論までここでするか?
Dと同じでいいじゃん
2018/03/31(土) 11:23:19.53ID:nFIfPX7B0
前提が違うものを同じには出来ないよ。
参考にすることはあると思うけど。
2018/03/31(土) 12:19:04.21ID:+mjd8c8id
仮想関数のアドレスが取れないという発言は何だったんだろう
2018/03/31(土) 13:29:05.67ID:19OTzhSN0
>>950
std::pair<Super*,std::string> obj2 = std::make_pair(new B(), "ClassB");
2018/03/31(土) 13:32:44.21ID:aygih7Tkd
スレチ
次スレまで引きずるなよ
982デフォルトの名無しさん
垢版 |
2018/03/31(土) 13:50:16.75
>>950
クラスA, B, Cにそれぞれ自分自身のインスタンスを生成するstaticメソッドを用意し、
そのstaticメソッドへのポインタを返す共通メソッドを用意する。
2018/03/31(土) 14:23:30.31ID:aFk+9CH40
リフレクションがある言語でGUIの画面またはユーザーコントロールを作成する際に
YSIWYGで作ることをやれるIDEを作りたい、というときに、メンバー関数とプロパティーの2種類あったら便利なのや

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

もっとも上記課題解決のための技術は10年も前にWPFの登場で丸ごと過去の技術やがな…
2018/03/31(土) 14:30:32.65ID:aFk+9CH40
ていうかWPFのコンバーターの書き方とか、メンバ関数に逆戻りやぞ…
(IValueConverter.Convert(), IValueConverter.ConvertBack(),
 IMultiValueConverter.Conver(), IMultiValueConverter.ConvertBack(), ...
2018/03/31(土) 15:43:53.79ID:UG1yVXDXa
リフレクションはゴミとまで言わないけどc++にはいらない機能
986デフォルトの名無しさん (ワッチョイ d180-3UCh)
垢版 |
2018/03/31(土) 16:09:17.20ID:D1vbg0pQ0
リフレクションがあれば死なずに済んだ人もいるだろうに。
2018/03/31(土) 16:37:26.06ID:UG1yVXDXa
デバッグでリフレクション使うのか?
2018/03/31(土) 20:24:42.16ID:o3PNwIlC0
C++相談室 part135
http://mevius.5ch.net/test/read.cgi/tech/1522495206/

もう糞テンプレいらないよね?
あと死ね
2018/03/31(土) 22:27:57.63ID:u+oLKOIo0
うむごくろう。
2018/04/01(日) 18:13:20.31ID:JVL2cf0wa
c++のfriendはprivateメンバーすべてにアクセスできてしまうけど特定の変数だけ、もしくは特定の関数だけfriendにする事は可能でしょうか?
2018/04/01(日) 18:43:04.30ID:nEv6CmIlM
>>990
ピンプるか、○○って俺の友達の友達なんだぜーにしてしまうか、かなー
992デフォルトの名無しさん (アウアウウー Sa45-HAdz)
垢版 |
2018/04/01(日) 19:11:40.34ID:BG5JJopwa
pimplイデオムはなんとなくわかるけど、俺の友達の友達は編集したい対象を別のクラスに分けてしまうこと?
2018/04/01(日) 20:21:44.04ID:WPbk7cUz0
そういえばシステムハンガリアンはしばしば批判されるのに、pimplのpは批判されているのを見たことがないな。
2018/04/01(日) 21:12:28.11ID:47FEpc5z0
https://www.google.com/search?q=%E5%8D%8A%E5%88%88%E3%82%8A&;tbm=isch
2018/04/01(日) 22:32:25.37ID:EwuQ9U5u0
(餃子が (御乱心 (されたぞー)))
2018/04/01(日) 23:03:08.00ID:47FEpc5z0
>>995
そこは「ハンガリアンじゃなくて半刈りやん」って言って欲しかった。
2018/04/02(月) 07:54:09.78ID:t04teqlda
いやいやこんなの丸刈りやん
2018/04/02(月) 09:36:33.18ID:E1iWIfmB0
>>983
YSIWYGってなに?
999デフォルトの名無しさん
垢版 |
2018/04/02(月) 11:52:25.29
>>998
WYSIWYGのtypoなだけやん
アスペか
2018/04/02(月) 12:50:23.03ID:E1iWIfmB0
訂正だろ? 態度悪いなおまえ
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 72日 3時間 44分 41秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


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

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

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。