C++相談室 part134

レス数が1000を超えています。これ以上書き込みはできません。
次スレを立てる時は本文の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

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{};
}
};

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

954デフォルトの名無しさん (ワッチョイ 4104-2GNe)2018/03/31(土) 06:47:39.87ID:8va89mAu0
プロパティを関数として実装したら関数のアドレスは取れるんじゃないかなぁ。はぁ、実装依存ですか。

>>950
全然スマートじゃないがvisitorパターン使えば?

956デフォルトの名無しさん (ワッチョイ 93b3-PArs)2018/03/31(土) 09:03:59.00ID:OaeapR1O0
>>953
> 単純に &obj.int_prop と書いた時に、この式の型と値をどうするかは難しい問題じゃない?
エラーにしちゃえばいいだろ

957デフォルトの名無しさん (ワッチョイ 4150-W7mk)2018/03/31(土) 09:14:46.66ID:HGehdmya0
つまり意識しなきゃならんてことか
じゃあ素直に関数にしろよ

958はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5b6f-kUw7)2018/03/31(土) 09:16:04.32ID:nFIfPX7B0
>>953
一時オブジェクトへのポインタってことにする一択だと思うけどなぁ。

あくまでも「変数に見せかける」、
つまりは、ゲッタの呼出しに構文糖を付けて見かけ上だけ変数 (データメンバ) っぽいって立場を貫かないと、
余計な気を回してもわかり難さが増すだけだよ。
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#とかはその辺の問題どう解決してるのかしらね

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
};
みたいにアドレス抽出用のメソッドを追加すりゃ良いだけのような気がする

969デフォルトの名無しさん (ワッチョイ 4150-W7mk)2018/03/31(土) 10:00:37.36ID:HGehdmya0
コードを減らす為の規格追加でコードを増やす解決法

う〜ん

970はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5b6f-kUw7)2018/03/31(土) 10:21:02.77ID:nFIfPX7B0
>>969
これは抽象化の話なんだよ。
変数のように見せかけるためには何が必要かって話なの。

971デフォルトの名無しさん (ワッチョイ 1908-kUw7)2018/03/31(土) 10:29:50.12ID:15qJIIAA0

972デフォルトの名無しさん (ワッチョイ 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
}
この方がしっくり来るな

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
};
予約語増やさないならこんな感じに書けなくもない

977デフォルトの名無しさん (ワッチョイ 5be9-VlFK)2018/03/31(土) 11:21:25.52ID:Pb+ZodvD0
プロパティの実装の議論までここでするか?
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");

981デフォルトの名無しさん (スップ Sdb3-W7mk)2018/03/31(土) 13:32:44.21ID:aygih7Tkd
スレチ
次スレまで引きずるなよ

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

983デフォルトの名無しさん (ワッチョイ d3bd-qsUw)2018/03/31(土) 14:23:30.31ID:aFk+9CH40
リフレクションがある言語でGUIの画面またはユーザーコントロールを作成する際に
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(), ...

リフレクションはゴミとまで言わないけどc++にはいらない機能

986デフォルトの名無しさん (ワッチョイ d180-3UCh)2018/03/31(土) 16:09:17.20ID:D1vbg0pQ0
リフレクションがあれば死なずに済んだ人もいるだろうに。

デバッグでリフレクション使うのか?

988デフォルトの名無しさん (ワッチョイ d3cb-q1Nq)2018/03/31(土) 20:24:42.16ID:o3PNwIlC0
C++相談室 part135
http://mevius.5ch.net/test/read.cgi/tech/1522495206/

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

989デフォルトの名無しさん (ワッチョイ 9380-V9Xo)2018/03/31(土) 22:27:57.63ID:u+oLKOIo0
うむごくろう。

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:47FEpc5z0

995デフォルトの名無しさん (ワッチョイ d3cb-q1Nq)2018/04/01(日) 22:32:25.37ID:EwuQ9U5u0
(餃子が (御乱心 (されたぞー)))

996はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5b6f-kUw7)2018/04/01(日) 23:03:08.00ID:47FEpc5z0
>>995
そこは「ハンガリアンじゃなくて半刈りやん」って言って欲しかった。

いやいやこんなの丸刈りやん

998デフォルトの名無しさん (ワッチョイ 19bd-kUw7)2018/04/02(月) 09:36:33.18ID:E1iWIfmB0
>>983
YSIWYGってなに?

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

1000デフォルトの名無しさん (ワッチョイ 19bd-kUw7)2018/04/02(月) 12:50:23.03ID:E1iWIfmB0
訂正だろ? 態度悪いなおまえ

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

10021002Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


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

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

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

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php

レス数が1000を超えています。これ以上書き込みはできません。