次スレを立てる時は本文の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:WoNXR2ax0 >>101
>K&Rも「関数ポインタも使えるよ」としか書いて無い。あれはもっと力説されて然るべきだった。
これが本題かな?
いや、関数ポインタってそんなに特筆すべきものだったかな…むしろ setjmp()/longjmp() の方がインパクトが、ってこれはexception として広く採用されていましたっけね
いや、関数ポインタってコールバック(とvtable)は別として、何か使えるネタが他にあるかなって考えてました、今のところ思いつかないな…
>K&Rも「関数ポインタも使えるよ」としか書いて無い。あれはもっと力説されて然るべきだった。
これが本題かな?
いや、関数ポインタってそんなに特筆すべきものだったかな…むしろ setjmp()/longjmp() の方がインパクトが、ってこれはexception として広く採用されていましたっけね
いや、関数ポインタってコールバック(とvtable)は別として、何か使えるネタが他にあるかなって考えてました、今のところ思いつかないな…
>>99
>(instance.method()とstaticMethod(instance)の実行時の違いがほぼ無い、
うーん、Java で、これでもか、これでもか、と this が null でないことをチェックするのを読んだことがあります。
C++ だと(virtual でなければ)普通に this = 0 にして this->method() できちゃうんですが、この this の null チェックって、広く行われているのでしょうか?http://codepad.org/gtEBWFKR
>(instance.method()とstaticMethod(instance)の実行時の違いがほぼ無い、
うーん、Java で、これでもか、これでもか、と this が null でないことをチェックするのを読んだことがあります。
C++ だと(virtual でなければ)普通に this = 0 にして this->method() できちゃうんですが、この this の null チェックって、広く行われているのでしょうか?http://codepad.org/gtEBWFKR
これでおしまい
try〜catch はいいとして、finally って使いにくい、というか使い方がわからないんですが、finally って意味あるんでしょうか?
try〜catch はいいとして、finally って使いにくい、というか使い方がわからないんですが、finally って意味あるんでしょうか?
306デフォルトの名無しさん (オッペケ Srbd-MUmZ)
2017/12/05(火) 12:10:12.56ID:4pWc4df5r > RAII /デストラクタが Java にもあればなあ、と思っています
RAIIは7年前にジャバに入った筈だが
何を言っているのだろうか
RAIIは7年前にジャバに入った筈だが
何を言っているのだろうか
307はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5e6f-bpph)
2017/12/05(火) 18:56:58.67ID:+5IMShlD0 >>305
C++ 的にはなるべくデストラクタで後始末がつくようにやれというスタンスっぽい
C++ 的にはなるべくデストラクタで後始末がつくようにやれというスタンスっぽい
308はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5e6f-bpph)
2017/12/05(火) 19:00:20.98ID:+5IMShlD0 >>308
え!
え!
310デフォルトの名無しさん (ワッチョイ dee7-JjO2)
2017/12/05(火) 19:18:52.02ID:EmfbEE5b0 this->method()は(*this).method()と等価で、ぬるぽに*適用したらその時点で未定義だからアウト
311デフォルトの名無しさん (ワッチョイ c576-jUU9)
2017/12/05(火) 19:33:35.46ID:EFbqYV3B0 未定義だけどvirtualじゃなきゃ大抵動く
だからNULLチェックも意味がある
だからNULLチェックも意味がある
312デフォルトの名無しさん (ワッチョイ 398a-RK4k)
2017/12/05(火) 19:58:57.51ID:U9JLSPtA0 thisをNULLチェックするようになったらそれはもう終わってるコード
313デフォルトの名無しさん (ワッチョイ c576-jUU9)
2017/12/05(火) 20:02:17.22ID:EFbqYV3B0 終わってるヤツでも使えるようにする
よくあること
よくあること
314デフォルトの名無しさん (ワンミングク MM7a-o8PC)
2017/12/05(火) 20:52:26.72ID:sgxJpWORM >>313
呼び出されなくても泣くなよ
呼び出されなくても泣くなよ
315デフォルトの名無しさん (ドコグロ MM6d-YtI1)
2017/12/05(火) 20:53:39.04ID:TKR/EMkrM >>305
catchの中で再スローしてもとにかくリソースを解放したいとか普通にあるでしょ
catchの中で再スローしてもとにかくリソースを解放したいとか普通にあるでしょ
316デフォルトの名無しさん (ドコグロ MM12-YtI1)
2017/12/05(火) 21:07:41.41ID:njWV82p8M317デフォルトの名無しさん (ワッチョイ 398a-RK4k)
2017/12/05(火) 23:32:01.27ID:U9JLSPtA0 >>315
RAIIを徹底すればそんな危なっかしいことは不要
RAIIを徹底すればそんな危なっかしいことは不要
318デフォルトの名無しさん (ワッチョイ 36fb-MUmZ)
2017/12/05(火) 23:35:55.54ID:+TIDOo7u0319デフォルトの名無しさん (ワッチョイ 398a-RK4k)
2017/12/05(火) 23:52:38.14ID:U9JLSPtA0 >>300
std::make_uniqueがあるだろうが(C++14)
std::make_uniqueがあるだろうが(C++14)
320デフォルトの名無しさん (ワッチョイ 59e3-HgL3)
2017/12/05(火) 23:55:11.50ID:WoyHGfNJ0 返答を期待しないでただ聞いて文句言ってもらいたんですけど
03以来久し振りにc++いじってます
17だか20の最新仕様も未だにclassでgetter/setter定義しなきゃいけない仕様なんですかね?
C#のpropertyがあれば便利と思うんですけど。今あるか知りませんが
どうなんでしょ?今後の仕様も導入予定なし?
おやすみなさい
03以来久し振りにc++いじってます
17だか20の最新仕様も未だにclassでgetter/setter定義しなきゃいけない仕様なんですかね?
C#のpropertyがあれば便利と思うんですけど。今あるか知りませんが
どうなんでしょ?今後の仕様も導入予定なし?
おやすみなさい
321デフォルトの名無しさん (ワッチョイ 6681-Syir)
2017/12/06(水) 00:03:17.02ID:nXK3hnHv0 そもそも状態を露出するな
322はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5e6f-bpph)
2017/12/06(水) 01:18:56.49ID:s33DVBsR0 >>311
いや、俺は意図通りに動かない場合にガチで遭遇したことあるからこれはホントにお勧めしない。
いや、俺は意図通りに動かない場合にガチで遭遇したことあるからこれはホントにお勧めしない。
323デフォルトの名無しさん (ワッチョイ 3d04-4NBu)
2017/12/06(水) 01:21:27.27ID:+0bHqE6f0 >>320
そもそも、せったげったってそんなに重要か?
そもそも、せったげったってそんなに重要か?
324デフォルトの名無しさん (ワッチョイ ea33-MbHU)
2017/12/06(水) 01:48:19.95ID:K0RLdWNW0325はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5e6f-bpph)
2017/12/06(水) 02:05:35.10ID:s33DVBsR0 一応 >>324 を解説しておくと、 this が真のときはもちろん真だし、
this が偽 (ヌル) のときは未定義なのでどういう挙動をしてもかまわないので真と解釈してもええやろという超推論で常に真として扱われる。
this が偽 (ヌル) のときは未定義なのでどういう挙動をしてもかまわないので真と解釈してもええやろという超推論で常に真として扱われる。
326デフォルトの名無しさん (ワッチョイ b5b3-9GJZ)
2017/12/06(水) 04:07:36.86ID:hjP5HWFz0 ++thisってやるとどうなるんだろうねえ。
327デフォルトの名無しさん (ワッチョイ a66e-hJGX)
2017/12/06(水) 05:07:17.55ID:yhpve1PE0 できないよ
thisは常にconst修飾されている
禿本1stではthisへの代入があったんだけどね
thisは常にconst修飾されている
禿本1stではthisへの代入があったんだけどね
328デフォルトの名無しさん (ワッチョイ 36fb-MUmZ)
2017/12/06(水) 07:19:10.64ID:Fjj6BXu50 >thisは常にconst修飾されている
それは規格のどこに書いてあるのですか
それは規格のどこに書いてあるのですか
329デフォルトの名無しさん (スプッッ Sdea-gD61)
2017/12/06(水) 08:02:56.90ID:vAzWmOhld thisってprvalueじゃないのか?
330デフォルトの名無しさん (ワッチョイ fa96-JU5h)
2017/12/06(水) 08:25:21.60ID:ROyOilcp0 This is a pen.
331デフォルトの名無しさん (ワッチョイ 6679-mNEL)
2017/12/06(水) 08:33:58.89ID:BltAOSs70 ISO、C++17の仕様「ISO/IEC 14882:2017」を発行
https://mag.osdn.jp/17/12/05/171500
「ISO/IEC 14882:2017」
https://www.iso.org/standard/68564.html
https://mag.osdn.jp/17/12/05/171500
「ISO/IEC 14882:2017」
https://www.iso.org/standard/68564.html
332デフォルトの名無しさん (ワッチョイ a66e-hJGX)
2017/12/06(水) 10:56:56.20ID:yhpve1PE0 >>329
ご指摘どうも
struct X
{
void f()
{
decltype(auto) that(this);
that = nullptr; //ok
}
void g()
{
X* const it(nullptr);
decltype(auto) that(it);
that = nullptr; //error
}
};
確かにそのようで
ご指摘どうも
struct X
{
void f()
{
decltype(auto) that(this);
that = nullptr; //ok
}
void g()
{
X* const it(nullptr);
decltype(auto) that(it);
that = nullptr; //error
}
};
確かにそのようで
333デフォルトの名無しさん (ワッチョイ a580-o8PC)
2017/12/06(水) 11:12:02.00ID:J84WjEud0 それはメンバー関数の修飾によっても変わるやろ
334デフォルトの名無しさん (ワッチョイ a66e-hJGX)
2017/12/06(水) 11:21:40.65ID:yhpve1PE0 void f() constのことを言っているなら見当違いだが
335デフォルトの名無しさん (スプッッ Sdea-gD61)
2017/12/06(水) 11:44:06.58ID:vAzWmOhld *thisじゃなくてthisのことだよね?
何かで「const pointerである」って読んだことあるような気もするけど、
そもそもprvalueにしか思えない。
何かで「const pointerである」って読んだことあるような気もするけど、
そもそもprvalueにしか思えない。
336デフォルトの名無しさん (ワッチョイ a66e-hJGX)
2017/12/06(水) 12:20:51.70ID:yhpve1PE0 this = だの &this なんてことは考えもしないので気がつかなかった
337デフォルトの名無しさん (ワッチョイ ea34-YBdU)
2017/12/06(水) 13:26:30.44ID:+UwbONVA0 this is it
338デフォルトの名無しさん (ワッチョイ 5d78-ToxZ)
2017/12/06(水) 16:04:03.08ID:S418wH960 this, this... this...
339デフォルトの名無しさん (ワッチョイ 6a12-JjO2)
2017/12/06(水) 18:31:30.07ID:Kh6EF+Se0 =0とかじゃなくてpureとかそのまま書ければいいのに
そもそもなんで0入れるんだ
そもそもなんで0入れるんだ
340デフォルトの名無しさん (ワッチョイ dee7-JjO2)
2017/12/06(水) 20:25:22.49ID:EpXMgW7A0 vtblの関数ポインタをNULLにセットするっていうK&R時代の発想で決まった文法
341デフォルトの名無しさん (ワッチョイ dee7-JjO2)
2017/12/06(水) 20:29:30.14ID:EpXMgW7A0 独自拡張で0の代わりに関数ポインタ代入できるようにした糞コンパイラと
それ使ってイベントハンドラかなんかの設定するようになってる糞システムが
なんかあったような気がするけど誰か覚えてない?
それ使ってイベントハンドラかなんかの設定するようになってる糞システムが
なんかあったような気がするけど誰か覚えてない?
342デフォルトの名無しさん (ワッチョイ a66e-hJGX)
2017/12/06(水) 21:00:00.17ID:yhpve1PE0343デフォルトの名無しさん (ワッチョイ 9fbd-aiou)
2017/12/07(木) 01:28:26.94ID:lJwR2NaH0 =0、漏れはしゅき!!!!1!!!!!11!
キーワードを増やさなくて済む
切り札は最後までとっておくべきものじゃ
キーワードを増やさなくて済む
切り札は最後までとっておくべきものじゃ
344デフォルトの名無しさん (ワッチョイ 9fbd-aiou)
2017/12/07(木) 01:56:58.07ID:lJwR2NaH0 つかpureみたいな柔弱で恥ずかしい感じのキーワードを追加してくれなくて本当に良かった
345デフォルトの名無しさん (ワッチョイ 5704-IpD3)
2017/12/07(木) 02:03:07.27ID:5gbe7aWB0 ピュア関数の提案は出てたよ。最適化に効くとかで。
346デフォルトの名無しさん (ワッチョイ 9f34-Xhpf)
2017/12/07(木) 02:13:17.50ID:ETsKWPG+0 ピュアプリズム!
347デフォルトの名無しさん (ワッチョイ 5778-T1Xs)
2017/12/07(木) 02:18:10.34ID:clrrPlpA0 C++98だかでポインタ値にNULLじゃなくて0を使うのが推奨されていた頃の名残じゃないかな
の割にはnullptrを指定するとエラーになるけど
の割にはnullptrを指定するとエラーになるけど
348はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-StTJ)
2017/12/07(木) 02:43:01.31ID:vxJqQn/b0 文脈依存キーワードを導入しちゃったからな。
pure も有りといえば有りな気はしないでもない。
pure も有りといえば有りな気はしないでもない。
349デフォルトの名無しさん (ワッチョイ bfe7-F7Qh)
2017/12/07(木) 19:18:50.53ID:TKFMtTzr0 pure関数って状態を持たない関数であって純粋仮想関数とは別物だぞ
350デフォルトの名無しさん (ワッチョイ 5704-IpD3)
2017/12/07(木) 19:49:26.48ID:5gbe7aWB0 >>347
標準委員の人がそういう意味じゃないよ。適当に決められたんだよ。って言ってた。
標準委員の人がそういう意味じゃないよ。適当に決められたんだよ。って言ってた。
351デフォルトの名無しさん (ドコグロ MMeb-45bT)
2017/12/07(木) 20:45:51.07ID:G7lyLovKM >>349
この話の流れで virtual pure function でないと思ってるお前が不憫だよ...
この話の流れで virtual pure function でないと思ってるお前が不憫だよ...
352デフォルトの名無しさん (ワッチョイ 9fbd-aiou)
2017/12/07(木) 22:05:02.33ID:lJwR2NaH0 =0は最初ボーランドが勝手に実装した、とどこかで読んだが
じゃあ=0より前のC++には純粋仮想関数は無かったのやろうか…
じゃあ=0より前のC++には純粋仮想関数は無かったのやろうか…
353デフォルトの名無しさん (ワッチョイ 9fbd-aiou)
2017/12/07(木) 22:43:46.61ID:lJwR2NaH0 ていうか
class Foo {
public:
void someMethod() { }
};
と書くしかなかったものが
class Foo {
public:
void someMethod() = 0;
};
になったのだとしたら
文字数的にもバランスがとれた良い追加構文
class Foo {
public:
void someMethod() { }
};
と書くしかなかったものが
class Foo {
public:
void someMethod() = 0;
};
になったのだとしたら
文字数的にもバランスがとれた良い追加構文
354デフォルトの名無しさん (ワッチョイ ff6e-5CBX)
2017/12/08(金) 07:14:19.07ID:zfye+4U00355デフォルトの名無しさん (ワッチョイ bf8a-ufcO)
2017/12/08(金) 08:40:57.49ID:t5VCrWbM0 ダダこねるな
356デフォルトの名無しさん (スップ Sd3f-jN+0)
2017/12/08(金) 10:07:38.22ID:Z3siquAKd publicが嫌ならstructで宣言しろよ
357デフォルトの名無しさん (ササクッテロル Sp8b-AVOn)
2017/12/08(金) 10:07:41.82ID:2Zvn0bTbp >>351
pure virtualだろ?virtual pureってなんだよ
pure virtualだろ?virtual pureってなんだよ
358デフォルトの名無しさん (ワッチョイ 9f34-Xhpf)
2017/12/08(金) 10:10:30.07ID:vOIFbJvh0 ピュアトゥインクル!
359デフォルトの名無しさん (ドコグロ MMdf-45bT)
2017/12/08(金) 13:00:32.45ID:PXTxgSdcM >>357
すまん、そんなアホなところにまで突っ込まないとダメなほど必死だとは思わなかったよ w
すまん、そんなアホなところにまで突っ込まないとダメなほど必死だとは思わなかったよ w
360357 (ワッチョイ 57b3-wJM8)
2017/12/08(金) 18:17:55.92ID:eC9D+0x50 必死なのはお前だろ
誰と同一人物だと思ったんだw
俺この話に参加したの初めてだぞ
誰と同一人物だと思ったんだw
俺この話に参加したの初めてだぞ
361デフォルトの名無しさん (ワッチョイ 57b3-wJM8)
2017/12/08(金) 18:29:46.65ID:eC9D+0x50362デフォルトの名無しさん (ワッチョイ 9f72-QvkH)
2017/12/08(金) 20:49:15.62ID:oKg6KkSA0 質問があります。
コンパイラはMicrosoft(R) C/C++ Optimizing Compiler Version 19.12.25830.2 for x86
class A {
public:
explicit A( void ) {}
};
struct B {
A a;
};
int
main( int, char ** )
{
B b;
B b2( {} );
B b3 = {};
B b4{};
return 0;
}
上記のソースをオプション/std:c++latestを付けるとエラー、つけないとエラー無しになります。
対処だけだったらAのコンストラクタからexplicitを取れば良いのですが、
何故エラーになるのかがイマイチ理解できていません。
C++17の波括弧初期化の型推論の新規則あたりがそれっぽいですがその辺を読んでも理解できていません。
(そもそも引数無しのコンストラクタにexplicitを何故付けるのかって突っ込まれそう)
コンパイラはMicrosoft(R) C/C++ Optimizing Compiler Version 19.12.25830.2 for x86
class A {
public:
explicit A( void ) {}
};
struct B {
A a;
};
int
main( int, char ** )
{
B b;
B b2( {} );
B b3 = {};
B b4{};
return 0;
}
上記のソースをオプション/std:c++latestを付けるとエラー、つけないとエラー無しになります。
対処だけだったらAのコンストラクタからexplicitを取れば良いのですが、
何故エラーになるのかがイマイチ理解できていません。
C++17の波括弧初期化の型推論の新規則あたりがそれっぽいですがその辺を読んでも理解できていません。
(そもそも引数無しのコンストラクタにexplicitを何故付けるのかって突っ込まれそう)
363デフォルトの名無しさん (スップ Sd3f-Hl5D)
2017/12/08(金) 21:05:07.58ID:5s0/Hyw7d 今時なんで32ビットなんて使うんだろ?
364デフォルトの名無しさん (ワッチョイ bf8a-ufcO)
2017/12/08(金) 21:19:10.75ID:t5VCrWbM0 >>362
エラーメッセージ読めねーのか?
エラーメッセージ読めねーのか?
365デフォルトの名無しさん (ワッチョイ 9fb3-Hxc3)
2017/12/08(金) 21:25:34.24ID:2vsjK8u+0 ベイトレのatomが32bitという負債
366320 (ワッチョイ b7e3-qmOZ)
2017/12/08(金) 23:32:07.03ID:uQLcRAb10 前にgetter/setterプロパティ書いた者だす
getter/setterは有効な回答得られず
03→17/20でも、例えば
int& Status() { return m_status; }
const int& Status() { return m_status; } const
の二重定義必要?
おやすみなさい
getter/setterは有効な回答得られず
03→17/20でも、例えば
int& Status() { return m_status; }
const int& Status() { return m_status; } const
の二重定義必要?
おやすみなさい
367デフォルトの名無しさん (ワッチョイ bfe7-F7Qh)
2017/12/08(金) 23:52:39.34ID:IFoyYnlC0 そんな糞みたいなgetter書くくらいならpublic変数にしたほうがまし
368デフォルトの名無しさん (ワッチョイ 9fb3-45bT)
2017/12/09(土) 00:00:04.12ID:jyWlwvil0369デフォルトの名無しさん (ワッチョイ 9f34-Xhpf)
2017/12/09(土) 00:06:55.18ID:CGhksCFV0 プロパティー使いたいならエンバカ
370デフォルトの名無しさん (ワッチョイ ff81-WAMQ)
2017/12/09(土) 00:30:19.70ID:/OGT/7c/0 そもそもプロパティをそのまま露出すんなって
371デフォルトの名無しさん (ワッチョイ 5778-T1Xs)
2017/12/09(土) 00:37:11.06ID:t6DuUCjM0 hage.sizeof みたいな書き方があってもいいけど、別になくてもいいからな
話は上がっているんだろうけど、優先順位はかなり低いと思うね
話は上がっているんだろうけど、優先順位はかなり低いと思うね
372デフォルトの名無しさん (ワッチョイ 5704-IpD3)
2017/12/09(土) 00:48:53.78ID:/xTkL2Yo0373デフォルトの名無しさん (ワッチョイ 57b3-wlc6)
2017/12/09(土) 02:05:41.93ID:X5cpE3G30374デフォルトの名無しさん (ワッチョイ 9fb3-45bT)
2017/12/09(土) 08:40:17.40ID:jyWlwvil0 夜中まで粘着 w
375デフォルトの名無しさん (ワッチョイ 9fbd-aiou)
2017/12/09(土) 11:10:57.47ID:VQtjhM8H0376デフォルトの名無しさん (ワッチョイ 9fbd-aiou)
2017/12/09(土) 11:13:16.09ID:VQtjhM8H0377デフォルトの名無しさん (ワッチョイ ff56-Nf6k)
2017/12/09(土) 12:28:24.94ID:IHtyR51x0378デフォルトの名無しさん (ワッチョイ 9780-yV1O)
2017/12/09(土) 13:28:08.16ID:xT8UfS000379デフォルトの名無しさん (ワッチョイ bf8a-ufcO)
2017/12/09(土) 13:40:30.88ID:JczXMZr10 ここでgetter/setter言ってるのは例外なくどうしようもない低能だから無視してあげて下さい
380片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdbf-n3/l)
2017/12/09(土) 14:04:38.96ID:Mc+Fg8lHd int mydata() const; // getter
void mydata(int data); // setter
こういう感じの下駄瀬田は道南?
void mydata(int data); // setter
こういう感じの下駄瀬田は道南?
381デフォルトの名無しさん (ワッチョイ 9fbd-aiou)
2017/12/09(土) 14:29:29.91ID:VQtjhM8H0 >>366のgetterの&を見落としていたorz
m_dataへのmutableなポインタを返すのではm_dataのgetterとは言えぬ
m_dataへのmutableなポインタを返すのではm_dataのgetterとは言えぬ
382デフォルトの名無しさん (ワッチョイ bfe7-F7Qh)
2017/12/09(土) 16:16:46.64ID:85CJr7Ot0 メンバ変数hogeにgetHoge,setHogeなんて名前の下駄雪駄を
機械的に作ろうとしてる事自体が間違いの可能性を考えろ
class Window
{
int width, height;
...
//まちがい
int getWidth() const;
int getHeight() const;
void setWidth(int w);
void setHeight(int h);
//せいかい
Size getCurrentFrameSize() const;
void resize(int width, int height);
};
機械的に作ろうとしてる事自体が間違いの可能性を考えろ
class Window
{
int width, height;
...
//まちがい
int getWidth() const;
int getHeight() const;
void setWidth(int w);
void setHeight(int h);
//せいかい
Size getCurrentFrameSize() const;
void resize(int width, int height);
};
383デフォルトの名無しさん (ワッチョイ bf9f-wlc6)
2017/12/09(土) 16:31:11.01ID:eDExTF/q0384デフォルトの名無しさん (ワッチョイ bfe7-F7Qh)
2017/12/09(土) 16:38:09.40ID:85CJr7Ot0 クラス内部状態の変更は意味のある操作単位として外部に公開すべきであって
むやみに内部の変数を下駄雪駄として露出すんなっていうつもりだったんだが難しかったかな?
むやみに内部の変数を下駄雪駄として露出すんなっていうつもりだったんだが難しかったかな?
385デフォルトの名無しさん (ワッチョイ bf9f-wlc6)
2017/12/09(土) 16:56:33.96ID:eDExTF/q0 >>384
そんな分かりきったことを議論することではないだろ。
C++の規格が新しくなってsetter/getterは従来道理なの?が質問。
set/getするときは、直の変数の読み書きの代用だけではななく、何かの処理をしたりして公開/制限付き公開するものじゃねーの?
そんな分かりきったことを議論することではないだろ。
C++の規格が新しくなってsetter/getterは従来道理なの?が質問。
set/getするときは、直の変数の読み書きの代用だけではななく、何かの処理をしたりして公開/制限付き公開するものじゃねーの?
386デフォルトの名無しさん (ドコグロ MMdf-45bT)
2017/12/09(土) 17:16:31.79ID:rvn5Lgi+M387デフォルトの名無しさん (ワッチョイ 9780-yV1O)
2017/12/09(土) 17:25:01.50ID:xT8UfS000388デフォルトの名無しさん (スプッッ Sd3f-q8ec)
2017/12/09(土) 18:54:12.14ID:WISiBPL1d 昔どっかで下駄雪駄をクラスにして公開する方法が書いてあったな。
面白そうだったけと使おうとした事はなかった。
面白そうだったけと使おうとした事はなかった。
389デフォルトの名無しさん (ワッチョイ 9780-yV1O)
2017/12/09(土) 19:16:55.95ID:xT8UfS000 単にデータメンバー指定したらgetter setter相当のメンバー関数を自動生成するような機能が欲しいというなら他のやつが言うように思考停止したバカしか欲しがらない機能
EなんとかとかいうIDEには付いてるらしいが
EなんとかとかいうIDEには付いてるらしいが
390デフォルトの名無しさん (ワッチョイ 17b3-G2/9)
2017/12/09(土) 20:17:03.24ID:FTIoFrRr0 理想はわかるけど、ある程度の規模のコードを書けば何だかんだでsetter/getterはけっこう書くだろ
391デフォルトの名無しさん (ワントンキン MM7f-WAMQ)
2017/12/09(土) 20:17:55.36ID:qp4HeFcwM .netのPropertyは実際のオブジェクトがバッキングフィールドってとこに完全隠蔽されることがメリット
C++では自動実装は不可能、同じ効果を得るならばpimplパターンでオブジェクトを隠蔽は可というのが答えではないだろうか
C++では自動実装は不可能、同じ効果を得るならばpimplパターンでオブジェクトを隠蔽は可というのが答えではないだろうか
392デフォルトの名無しさん (ワントンキン MM7f-WAMQ)
2017/12/09(土) 20:18:50.11ID:qp4HeFcwM >>390
getterはともかくsetterは書かない
getterはともかくsetterは書かない
393デフォルトの名無しさん (ワッチョイ 9fbd-aiou)
2017/12/09(土) 20:26:30.08ID:VQtjhM8H0 setter/getter批判論者は何を批判しているのかいまいちわからん…
class SomeWidget { // GUIのパーツか何か
Color m_FgColor; // 前景色
Color m_BgColor; // 背景色
...
};
とゆークラスがあったとして、
void SomeWidget::setFgColor(Color color) { m_FgColor = color; }
void SomeWidget::setBgColor(Color color) { m_BgColor = color; }
というのはsetterだからダメで、意味的にまとまりのある
void SomeWidget::setColor(Color fgColor, Color bgColor) { m_FgColor = color; m_BgColor = color; }
とかにしないとダメだとかそーいう主張?
スゲーいらんお世話な気が…
class SomeWidget { // GUIのパーツか何か
Color m_FgColor; // 前景色
Color m_BgColor; // 背景色
...
};
とゆークラスがあったとして、
void SomeWidget::setFgColor(Color color) { m_FgColor = color; }
void SomeWidget::setBgColor(Color color) { m_BgColor = color; }
というのはsetterだからダメで、意味的にまとまりのある
void SomeWidget::setColor(Color fgColor, Color bgColor) { m_FgColor = color; m_BgColor = color; }
とかにしないとダメだとかそーいう主張?
スゲーいらんお世話な気が…
394デフォルトの名無しさん (ワッチョイ 57b3-wlc6)
2017/12/09(土) 20:43:02.98ID:X5cpE3G30 setter/getter自体を批判してんじゃなくて
自動生成をC++に求めるのを間違いだと言ってるだけだと思うが
自動生成をC++に求めるのを間違いだと言ってるだけだと思うが
395デフォルトの名無しさん (ワッチョイ 9fb3-45bT)
2017/12/09(土) 21:05:37.85ID:jyWlwvil0 >>393
> void SomeWidget::setColor(Color fgColor, Color bgColor) { m_FgColor = color; m_BgColor = color; }
> とかにしないとダメ
それを意味的にまとまりがあると考えるお前がおかしい
だからそんな頓珍漢なレスになるんだよ
> void SomeWidget::setColor(Color fgColor, Color bgColor) { m_FgColor = color; m_BgColor = color; }
> とかにしないとダメ
それを意味的にまとまりがあると考えるお前がおかしい
だからそんな頓珍漢なレスになるんだよ
396デフォルトの名無しさん (ワッチョイ bfe7-F7Qh)
2017/12/09(土) 21:10:02.77ID:85CJr7Ot0 クラスにメンバーがいっぱい→それぞれの下駄雪駄をいっぱい作らなきゃ!→楽な書き方ないの?
っていう発想から抜け出せてないんだろうけど
この最初の矢印がそもそも間違いだって言ってんだよ
まずはどんな操作をpublicで公開すべきなのかちゃんと設計しろ、話はそれからだ
結果的にただのgetterとsetterとして実装されるものはもちろんあるだろうし、それが悪いわけじゃないけど、
そんなのが自動生成しなきゃ追いつかないほど大量に出てくるようなら一回設計を疑うべきだ
っていう発想から抜け出せてないんだろうけど
この最初の矢印がそもそも間違いだって言ってんだよ
まずはどんな操作をpublicで公開すべきなのかちゃんと設計しろ、話はそれからだ
結果的にただのgetterとsetterとして実装されるものはもちろんあるだろうし、それが悪いわけじゃないけど、
そんなのが自動生成しなきゃ追いつかないほど大量に出てくるようなら一回設計を疑うべきだ
397デフォルトの名無しさん (ワッチョイ 9780-yV1O)
2017/12/09(土) 21:10:22.08ID:xT8UfS000 内部のデータメンバーからインターフェースを作るのではなく、インターフェースから内部実装を書くという当たり前の事を言ってるだけ。
398デフォルトの名無しさん (ブーイモ MMbb-fHNr)
2017/12/09(土) 21:14:57.20ID:Z61PcTBCM >>392
あんたすげーな
あんたすげーな
399デフォルトの名無しさん (ワッチョイ 9780-yV1O)
2017/12/09(土) 21:17:58.04ID:xT8UfS000 これC++に限った話じゃないからね。これが理解出来ないようだったら自分のソフトウェアの設計能力はとてつもなく低いと自覚した方がいい
400デフォルトの名無しさん (ワッチョイ ff81-WAMQ)
2017/12/09(土) 23:03:23.79ID:/OGT/7c/0 >>393
なんでコンストラクタで初期化しないの?
なんでコンストラクタで初期化しないの?
401320酔っ払い (ワッチョイ b7e3-qmOZ)
2017/12/09(土) 23:18:04.72ID:2CXK8lIl0■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「中国人の訪日熱は冷めた」 人気旅行先から日本外れる 14日で自粛呼びかけ1カ月 [蚤の市★]
- 「1800万円の売り上げゼロに…」中国インバウンドに特化の宿の今 [蚤の市★]
- 地震 [Hitzeschleier★]
- 【STARTO ENTERTAINMENT】SUPER EIGHTの横山裕、フジ『ドッキリGP』ロケで全治2ヶ月の重傷 [Ailuropoda melanoleuca★]
- 【話題】好きな鍋は?! 「寄せ鍋」「キムチ鍋」「水炊き」「もつ鍋」「豆乳鍋」「ちゃんこ鍋」「ごま坦々鍋」「トマト鍋」 [ひぃぃ★]
- 【地震】 茨城 栃木 埼玉 千葉 震度4 [KingFisherは魚じゃないよ★]
- 【お漏らし】日銀、0.25%利上げへ [256556981]
- J( 'ー`)し「で、アンタなんで働かないの?」 ワイ👶「理由は2つありまして~」🏡
- 【悲報】人気女性落語家、気づいてしまう…「将棋をみてたら女性にのみ女流棋士などと"女"をつけられる、くだんな笑」 [339712612]
- おさかなさんあつまれえ
- ムミィ🥺いる❓🏡
- もうなんか最近の日本人って大災害について"諦めてる"よな、災害が起きても助け合う精神がないもんな [904880432]
