次スレを立てる時は本文の1行目に以下を追加して下さい。
!extend:on:vvvvv:1000:512
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。
前スレ
C++相談室 part137
http://mevius.5ch.net/test/read.cgi/tech/1531558382/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.103【環境依存OK】
http://mevius.5ch.net/test/read.cgi/tech/1530384293/
■長いソースを貼るときはここへ。■
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++相談室 part138
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (スフッ Sd9f-fGne)
2018/08/05(日) 18:02:36.57ID:DigzqJtZd436デフォルトの名無しさん (ワッチョイ 5f3d-HmT3)
2019/09/28(土) 00:07:57.26ID:aUCB7XSh0 デザインパターンは掃き溜めの鶴ではないか
何を言っているんだ
何を言っているんだ
437デフォルトの名無しさん (ワッチョイ 5f3d-HmT3)
2019/09/28(土) 00:19:01.32ID:aUCB7XSh0438デフォルトの名無しさん (ブーイモ MMab-ZxQK)
2019/09/28(土) 00:21:20.58ID:nD8IZGftM 目的が不明なコードに講評だってさ
439デフォルトの名無しさん (ワッチョイ 077b-88hv)
2019/09/28(土) 00:51:32.95ID:8mEfdn9E0 一応言っておくと、24時間は待つ。
状況によってはこの土日全部=48時間待ってもいい。
イキってるだけの馬鹿共はいい機会だから講評付けてみろ。
匿名なんだから失う物はないだろ。それが匿名掲示板の良さだ。
イキるだけだからお前らは馬鹿なままなんだよ。
イキる元気さをちゃんとプラスの方向に転化しろ。
イキっているのにここで参戦しないのはチキン過ぎるぜ。
デザインパターンを「言葉で」擁護するのではなく、「コードで」擁護してみせろ。
つまり、デザインパターンを極めたお前だからこそ書ける素晴らしいコードを提示し、
俺みたいにデザインパターンを馬鹿にしている奴との差を見せつけてみせろ。
>>438
ぼくはあのこーどがなにをするのかさっぱりわかりません、か。
はい、お前は負け決定。
そのレベルでイキってるからお前は馬鹿のままなんだよ。少しは自覚しろ。
状況によってはこの土日全部=48時間待ってもいい。
イキってるだけの馬鹿共はいい機会だから講評付けてみろ。
匿名なんだから失う物はないだろ。それが匿名掲示板の良さだ。
イキるだけだからお前らは馬鹿なままなんだよ。
イキる元気さをちゃんとプラスの方向に転化しろ。
イキっているのにここで参戦しないのはチキン過ぎるぜ。
デザインパターンを「言葉で」擁護するのではなく、「コードで」擁護してみせろ。
つまり、デザインパターンを極めたお前だからこそ書ける素晴らしいコードを提示し、
俺みたいにデザインパターンを馬鹿にしている奴との差を見せつけてみせろ。
>>438
ぼくはあのこーどがなにをするのかさっぱりわかりません、か。
はい、お前は負け決定。
そのレベルでイキってるからお前は馬鹿のままなんだよ。少しは自覚しろ。
440デフォルトの名無しさん (ワッチョイ 5f01-S/NQ)
2019/09/28(土) 01:24:50.38ID:xM8alBMg0441デフォルトの名無しさん (ドコグロ MM7f-Gn+r)
2019/09/28(土) 01:28:35.64ID:adXsKLupM イキってるって言いたいだけやん…
てか本人が一番イキってるしw
てか本人が一番イキってるしw
442デフォルトの名無しさん (ワッチョイ 5f52-k+Ie)
2019/09/28(土) 05:58:28.49ID:DGAUo+960443デフォルトの名無しさん (ワッチョイ 47f6-rP+5)
2019/09/28(土) 07:59:27.08ID:atv/D1Wn0 酔っ払いの独り言は誰も面白いと思っていない
駅前で不特定多数を叱り飛ばしている危ないオヤジと同じだ
駅前で不特定多数を叱り飛ばしている危ないオヤジと同じだ
444デフォルトの名無しさん (ワッチョイ 5f61-81Gp)
2019/09/28(土) 10:11:46.22ID:EwMBvois0 >>419
それは一理ある。実際、
自分の場合、1つのアプリの場合、ほとんどのclass メンバをpublicにしてる
場合がある。
しかし、class 分けすることで new CXxxx としただけで同じ種類のオブジェクトが
簡単に作成できる事や、似た働きを基礎に持っているが、基礎を発展させた応用的な
オブジェクトや同じ系統だが少しずつ働きの違うオブジェクトを、共通の基礎部分を
CBase クラスで書いておいて、それを継承したクラスで書ける事が便利になる。
だから、内部データにはアクセス禁止という意味でのカプセル化は達成したくても
なかなか達成できない事があるが、上記の様な意味で便利に使えてる。
それは一理ある。実際、
自分の場合、1つのアプリの場合、ほとんどのclass メンバをpublicにしてる
場合がある。
しかし、class 分けすることで new CXxxx としただけで同じ種類のオブジェクトが
簡単に作成できる事や、似た働きを基礎に持っているが、基礎を発展させた応用的な
オブジェクトや同じ系統だが少しずつ働きの違うオブジェクトを、共通の基礎部分を
CBase クラスで書いておいて、それを継承したクラスで書ける事が便利になる。
だから、内部データにはアクセス禁止という意味でのカプセル化は達成したくても
なかなか達成できない事があるが、上記の様な意味で便利に使えてる。
445デフォルトの名無しさん (ワッチョイ 5f61-81Gp)
2019/09/28(土) 10:16:07.55ID:EwMBvois0 >>435
それは思う。
それは思う。
446デフォルトの名無しさん (ワッチョイ 5f61-81Gp)
2019/09/28(土) 10:22:21.06ID:EwMBvois0 >>444
補足しておくと、protected に出来るメンバはできるだけ protectedにしている。
例えば、ポインタで保持している何らかのデータなどは、ちょっとしたことで
間違って削除してしまう可能性があるので、そこにデータを書いたり、
ポインタが指す先を付け替えたりする関数は出来る限り protected にしてる。
そして、それはなるべく基本クラスの方にくくり出す。もし、別の関数でも
これと同じような処理が必要になったら、既にある関数を組み合わせてなんとか
ならないかを考える。そうすることで、ポインタのつけ間違いや誤ったオブジェクトの
削除を防ぐことが出来る。
ポインタ以外でも、データの整合性に関して慎重さが必要な場合は、上記と
同じようなことをやっている。
補足しておくと、protected に出来るメンバはできるだけ protectedにしている。
例えば、ポインタで保持している何らかのデータなどは、ちょっとしたことで
間違って削除してしまう可能性があるので、そこにデータを書いたり、
ポインタが指す先を付け替えたりする関数は出来る限り protected にしてる。
そして、それはなるべく基本クラスの方にくくり出す。もし、別の関数でも
これと同じような処理が必要になったら、既にある関数を組み合わせてなんとか
ならないかを考える。そうすることで、ポインタのつけ間違いや誤ったオブジェクトの
削除を防ぐことが出来る。
ポインタ以外でも、データの整合性に関して慎重さが必要な場合は、上記と
同じようなことをやっている。
447デフォルトの名無しさん (アウアウカー Sa9b-4W5P)
2019/09/28(土) 11:00:36.13ID:LlqNH2NPa >>444
structで良いじゃん
structで良いじゃん
448デフォルトの名無しさん (ワッチョイ 5f61-81Gp)
2019/09/28(土) 11:38:05.06ID:EwMBvois0 >>447
純粋な構造体なら struct にして、名称も TXxxx にしている。
一方、メンバ関数があるものについては、原則的に必ず classにしている。
理由は、クラス定義を grep 検索する祭、必ず class CXxxx をキーワード
にすればよくなるから。これがもし、一部でも struct CXxxx というものが
混じっているなら class CXxxx では見落としてしまうことになる。
型名の頭文字が T の場合は、struct TXxxx と検索する。
純粋な構造体なら struct にして、名称も TXxxx にしている。
一方、メンバ関数があるものについては、原則的に必ず classにしている。
理由は、クラス定義を grep 検索する祭、必ず class CXxxx をキーワード
にすればよくなるから。これがもし、一部でも struct CXxxx というものが
混じっているなら class CXxxx では見落としてしまうことになる。
型名の頭文字が T の場合は、struct TXxxx と検索する。
449デフォルトの名無しさん (ワッチョイ 5f61-81Gp)
2019/09/28(土) 11:40:37.11ID:EwMBvois0 >>448
それから、その時はたまたま public: 属性ばかりなだけで、
後から protected: 属性のメンバもできてくる可能性も有るから、
純粋なデータ構造体以外は、必ず class に統一することにしている。
それから、その時はたまたま public: 属性ばかりなだけで、
後から protected: 属性のメンバもできてくる可能性も有るから、
純粋なデータ構造体以外は、必ず class に統一することにしている。
450デフォルトの名無しさん (ワッチョイ 47f6-rP+5)
2019/09/28(土) 11:50:17.24ID:atv/D1Wn0 システムハンガリアンにしがみついてる化石w
451デフォルトの名無しさん (ワッチョイ c7c3-+MBy)
2019/09/28(土) 12:22:40.96ID:X/zAGzhO0 MSVCはstructとclassの扱いが違う糞
452デフォルトの名無しさん (ワッチョイ 5f6e-kLFp)
2019/09/28(土) 14:13:38.93ID:LuoDMBWx0 >>451
どう違う?
どう違う?
453デフォルトの名無しさん (ワッチョイ c7c3-+MBy)
2019/09/28(土) 14:15:56.72ID:X/zAGzhO0 宣言と定義で変えたらlink出来ない
454デフォルトの名無しさん (ワッチョイ 47f6-rP+5)
2019/09/28(土) 14:23:25.73ID:atv/D1Wn0 んなことするやつこそ糞だと思うが
455デフォルトの名無しさん (ワッチョイ bfad-S/NQ)
2019/09/28(土) 14:31:07.26ID:zNn3MVf20 コンパイラによる解釈の違いを「そうきたか」と微笑みつつ解決するも楽しいものだよ。
456デフォルトの名無しさん (オイコラミネオ MM1f-NfUm)
2019/09/28(土) 14:50:38.12ID:CrZkyiYlM >>453
デフォルトのアクセス修飾子違うんだから当たり前じゃないのそれ
デフォルトのアクセス修飾子違うんだから当たり前じゃないのそれ
457デフォルトの名無しさん (ワッチョイ 5f61-81Gp)
2019/09/28(土) 15:09:19.89ID:EwMBvois0 >>456
そういえばそうだね。
そういえばそうだね。
458デフォルトの名無しさん (ワッチョイ c7c3-+MBy)
2019/09/28(土) 15:18:29.76ID:X/zAGzhO0 >>456
宣言にデフォルトのアクセス修飾子関係ないだろ
宣言にデフォルトのアクセス修飾子関係ないだろ
459デフォルトの名無しさん (ワッチョイ 5f61-81Gp)
2019/09/28(土) 15:27:08.75ID:EwMBvois0 >>458
一見そう思うかもしれないが、
class/struct の完全定義で、public: や protected: などを全く書かずにいきなり最初の
部分に書いたメンバに対しては関係ある。
本来の設計では class Aaaa だったのに、使う人が struct Aaaa で宣言してしまうと
Aaaa の完全定義の最初の部分に書いたメンバは、本来は private 属性で禁止されていた
はずなのに、使う側ではアクセスできてしまうことになる。
一見そう思うかもしれないが、
class/struct の完全定義で、public: や protected: などを全く書かずにいきなり最初の
部分に書いたメンバに対しては関係ある。
本来の設計では class Aaaa だったのに、使う人が struct Aaaa で宣言してしまうと
Aaaa の完全定義の最初の部分に書いたメンバは、本来は private 属性で禁止されていた
はずなのに、使う側ではアクセスできてしまうことになる。
460デフォルトの名無しさん (ワッチョイ 07b0-S/NQ)
2019/09/28(土) 15:35:18.31ID:urQdgSwI0 >>453が言っているのは異なるコンパイル単位で別の定義を使うという話じゃなくて宣言と定義だろ?
461デフォルトの名無しさん (オイコラミネオ MM1f-NfUm)
2019/09/28(土) 16:05:06.02ID:CrZkyiYlM こういうケースの話だとは思うけど
struct A;
class A
{
int a;
};
コンパイラがどう解釈するかは決まってるのかなこれ
struct A;
class A
{
int a;
};
コンパイラがどう解釈するかは決まってるのかなこれ
462デフォルトの名無しさん (ワッチョイ c71f-n9TO)
2019/09/28(土) 16:07:59.85ID:YjLwj0vT0 エラー出すんじゃないの?
463デフォルトの名無しさん (ワッチョイ c7e8-upKm)
2019/09/28(土) 16:38:02.11ID:E6lKnilk0 c++17のfilesystemで、windowsの「マイドキュメント」とか展開するときってどうやるん?
自分は、日和ってWindowsの関数使ったんだけど。
自分は、日和ってWindowsの関数使ったんだけど。
464デフォルトの名無しさん (ワッチョイ 5f01-ZxQK)
2019/09/28(土) 17:06:13.76ID:xM8alBMg0 >>459
リンクって何やる処理かご存知?
リンクって何やる処理かご存知?
465デフォルトの名無しさん (ワッチョイ c7e8-upKm)
2019/09/28(土) 18:27:19.82ID:E6lKnilk0 C++のclassとstructの違いはデフォルトのアクセス権が、
class : private
struct : public
ということでしかなくて、アクセス権を追加するのは両方できる。
さらに継承もできる。
class : private
struct : public
ということでしかなくて、アクセス権を追加するのは両方できる。
さらに継承もできる。
466デフォルトの名無しさん (ワッチョイ 5f7c-5975)
2019/09/28(土) 18:44:36.11ID:dulQ4DqV0 継承の時デフォルトがpublicかprivateかもあったような?
467デフォルトの名無しさん (ワッチョイ c7e8-upKm)
2019/09/28(土) 18:50:19.34ID:E6lKnilk0 >>466
それは、クラスはprivateで、構造体はpublicで継承されたと思う。基本値として。
それは、クラスはprivateで、構造体はpublicで継承されたと思う。基本値として。
468デフォルトの名無しさん (ワッチョイ c7c3-+MBy)
2019/09/28(土) 18:53:35.09ID:X/zAGzhO0 >>461
決まっている
規格上は宣言時structだろうがclassだろうが完全に同じ扱い
msvcは同一コンパイル単位では警告出してくるし、別れているとマングリングが変わるせいで引数にポインタや参照が含まれる関数などがある場合、linkが出来なくなる
決まっている
規格上は宣言時structだろうがclassだろうが完全に同じ扱い
msvcは同一コンパイル単位では警告出してくるし、別れているとマングリングが変わるせいで引数にポインタや参照が含まれる関数などがある場合、linkが出来なくなる
469デフォルトの名無しさん (ワッチョイ 47f6-rP+5)
2019/09/28(土) 19:44:13.97ID:atv/D1Wn0 classで宣言したものを、
わざわざstructで定義する必要性って
どんな時に出てくるんだ?
関数の仮引数を[]で宣言して
わざわざ*で定義する必要性なら
まあ出てくることもあるが
わざわざstructで定義する必要性って
どんな時に出てくるんだ?
関数の仮引数を[]で宣言して
わざわざ*で定義する必要性なら
まあ出てくることもあるが
470デフォルトの名無しさん (ワッチョイ 077b-88hv)
2019/09/28(土) 19:51:09.64ID:8mEfdn9E0471デフォルトの名無しさん (ワッチョイ 5f6e-kLFp)
2019/09/28(土) 20:23:29.91ID:LuoDMBWx0 アンチMSにとっては挙動が他と少しでも違えば気に入らないんだろうさ
472デフォルトの名無しさん (ワッチョイ 5f61-81Gp)
2019/09/28(土) 21:37:11.39ID:lqPuvWRw0473デフォルトの名無しさん (ワッチョイ c7c3-+MBy)
2019/09/28(土) 21:47:31.84ID:X/zAGzhO0474デフォルトの名無しさん (ワッチョイ 077b-88hv)
2019/09/28(土) 22:00:22.50ID:8mEfdn9E0 >>473
そういう問題ではなくて、
静的言語のメリットは、プログラマの明確な間違い=タイポや型違いをコンパイル時に落とせる事でもあるだろ。
structとclassを間違えているのならコンパイルエラーにすべき、というのがお前以外の他全員だと思うが。
そういうどうでもいいところにこだわりすぎてるから上達してないのだと思うぞ。
そういう問題ではなくて、
静的言語のメリットは、プログラマの明確な間違い=タイポや型違いをコンパイル時に落とせる事でもあるだろ。
structとclassを間違えているのならコンパイルエラーにすべき、というのがお前以外の他全員だと思うが。
そういうどうでもいいところにこだわりすぎてるから上達してないのだと思うぞ。
475デフォルトの名無しさん (ワッチョイ c7e8-upKm)
2019/09/28(土) 22:02:55.72ID:E6lKnilk0 勝手に総意を語らないでください。
structとclassは同じ文脈で使われることもそれなりにあるので、
どう判断したら文脈的に正しいと思いますか?
structとclassは同じ文脈で使われることもそれなりにあるので、
どう判断したら文脈的に正しいと思いますか?
476デフォルトの名無しさん (ワッチョイ 077b-88hv)
2019/09/28(土) 22:12:35.78ID:8mEfdn9E0 >>475
まあお前の意見が違うのは分かった。
普通の人は、VCの動作で全く問題ないと思うが。
実際誰も擁護もしないし、必要性もないだろ。
逆にstructとclassを混ぜてる糞ソースでドヤア出来る感覚は頭おかしいと思うが。
まあお前の意見が違うのは分かった。
普通の人は、VCの動作で全く問題ないと思うが。
実際誰も擁護もしないし、必要性もないだろ。
逆にstructとclassを混ぜてる糞ソースでドヤア出来る感覚は頭おかしいと思うが。
477デフォルトの名無しさん (ワッチョイ 5f01-S/NQ)
2019/09/28(土) 22:23:14.45ID:xM8alBMg0 間違いで起きるかそれ?
それが起きるとしたら、同名だけど中身が全く違うものをincludeしてる状態だろ
class/sturctの違いだけ気づけてもありがたみない
それが起きるとしたら、同名だけど中身が全く違うものをincludeしてる状態だろ
class/sturctの違いだけ気づけてもありがたみない
478デフォルトの名無しさん (ワッチョイ 077b-88hv)
2019/09/28(土) 22:34:45.68ID:8mEfdn9E0 >>477
間違いではなくて、
書いてる本人が同じ物にstructとclassを混ぜて使っており、
その本人がそれでいいと思っているケースだろ。
少なくとも ID:X/zAGzhO0 と ID:E6lKnilk0 はそうなんだろ。
> 同名だけど中身が全く違うものをincludeしてる状態
これはほぼ間違いなくコンパイルエラーで落ちるから、それで問題ないと思うが。
間違いではなくて、
書いてる本人が同じ物にstructとclassを混ぜて使っており、
その本人がそれでいいと思っているケースだろ。
少なくとも ID:X/zAGzhO0 と ID:E6lKnilk0 はそうなんだろ。
> 同名だけど中身が全く違うものをincludeしてる状態
これはほぼ間違いなくコンパイルエラーで落ちるから、それで問題ないと思うが。
479デフォルトの名無しさん (ワッチョイ 7f7b-Z/MO)
2019/09/28(土) 22:44:30.75ID:2zqklXVt0 警告出されないほうが困る事のが多そうだけどな
どっちで定義するつもりだったのかわからんもん
どっちで定義するつもりだったのかわからんもん
480デフォルトの名無しさん (ワッチョイ 5f61-81Gp)
2019/09/28(土) 22:49:07.22ID:lqPuvWRw0 C++では、constが付いているかいないかでも、関数のmangling名が
違うので、リンク段階でエラーが出る。
こっちのエラーも余り深く考えたことが無いけれど、似たような意味で
structとclassが違っていればリンク段階でエラーになるようになっている
気がする。つまり、const属性の違いの混乱が起きていてもエラーになるが、
似たような意味でアクセス属性の違いでもエラーになるようになっている。
普通、ライブラリに対応するヘッダファイルを正しく #include していれば、
このような現象は生じないが、新しく追加された関数のプロトタイプ宣言が
無い場合に自分で、ネットにあったプロトタイプ宣言をコピーしてきたような
場合にconst属性の違いが生じることがあるかも。
それと同様に、自分で作ってるアプリの *.cpp と *.h で、勘違いして
class型の完全定義をstruct型で不完全定義してしまっているとか。
そういうのは中身まで間違っていることもあるので、リンク段階でエラーになった
方が、原因不明のエラーを防ぐのに有効だと思われる。
違うので、リンク段階でエラーが出る。
こっちのエラーも余り深く考えたことが無いけれど、似たような意味で
structとclassが違っていればリンク段階でエラーになるようになっている
気がする。つまり、const属性の違いの混乱が起きていてもエラーになるが、
似たような意味でアクセス属性の違いでもエラーになるようになっている。
普通、ライブラリに対応するヘッダファイルを正しく #include していれば、
このような現象は生じないが、新しく追加された関数のプロトタイプ宣言が
無い場合に自分で、ネットにあったプロトタイプ宣言をコピーしてきたような
場合にconst属性の違いが生じることがあるかも。
それと同様に、自分で作ってるアプリの *.cpp と *.h で、勘違いして
class型の完全定義をstruct型で不完全定義してしまっているとか。
そういうのは中身まで間違っていることもあるので、リンク段階でエラーになった
方が、原因不明のエラーを防ぐのに有効だと思われる。
481デフォルトの名無しさん (ワッチョイ 47f6-rP+5)
2019/09/28(土) 22:50:49.47ID:atv/D1Wn0 structとclassで多重定義できるべきとでも言いたいのか?
482デフォルトの名無しさん (ワッチョイ 07b0-S/NQ)
2019/09/28(土) 22:51:32.96ID:urQdgSwI0 コードスメル的な問題はあるとしても実害は考えられないのでは?
483デフォルトの名無しさん (ワッチョイ 5f01-S/NQ)
2019/09/28(土) 22:54:02.47ID:xM8alBMg0 で、VCの仕様で助かった経験のある人いんの?
class/structの違いは単なる表面的なsyntaxの違いでしかないと理解するのは自然
それが実はバイナリに影響してるってのはいらぬ驚き
という主張はおれはわかる
別にVCの仕様がおかしいとは言わないが何か防御に役立つとは思えない
class/structの違いは単なる表面的なsyntaxの違いでしかないと理解するのは自然
それが実はバイナリに影響してるってのはいらぬ驚き
という主張はおれはわかる
別にVCの仕様がおかしいとは言わないが何か防御に役立つとは思えない
484デフォルトの名無しさん (ワッチョイ 077b-88hv)
2019/09/28(土) 22:57:28.76ID:8mEfdn9E0485デフォルトの名無しさん (ワッチョイ c7e8-upKm)
2019/09/28(土) 22:59:07.82ID:E6lKnilk0 自分のポリシーとしては、
構造体は変数のブロック用程度にしか考えないし、ユーティリティ作るときはclass使う。
だから、構造体使うときは、アラインとか気を使う。クラスはどうでもいい。
構造体は変数のブロック用程度にしか考えないし、ユーティリティ作るときはclass使う。
だから、構造体使うときは、アラインとか気を使う。クラスはどうでもいい。
486デフォルトの名無しさん (ワッチョイ 077b-88hv)
2019/09/28(土) 23:00:07.72ID:8mEfdn9E0 >>483
むしろお前は混ぜていい仕様で助かっているのか?
むしろお前は混ぜていい仕様で助かっているのか?
487デフォルトの名無しさん (ワッチョイ 7f7b-Z/MO)
2019/09/28(土) 23:00:21.59ID:2zqklXVt0 本来privateであるべきところがpublicになっててアクセスできるのは起こり得るんじゃないの
>>483
混ぜる必要がないし混ざらないほうがいいと思うけど
まず宣言と定義でごっちゃになることがないから実害食らったひとはいなさそうだけど
>>483
混ぜる必要がないし混ざらないほうがいいと思うけど
まず宣言と定義でごっちゃになることがないから実害食らったひとはいなさそうだけど
488デフォルトの名無しさん (ワッチョイ 47f6-rP+5)
2019/09/28(土) 23:02:53.00ID:atv/D1Wn0 >>486
ニホンゴワカリマスカ?
ニホンゴワカリマスカ?
489デフォルトの名無しさん (ワッチョイ c7c3-+MBy)
2019/09/28(土) 23:03:40.64ID:X/zAGzhO0 >>459
こそ勘違いの最足るものだろうに
structとclassは定義時のデフォルトがpublicになるか否か以外言語仕様上違いが無いんだよ
struct A;
class A;
どちらもクラスAの宣言
こそ勘違いの最足るものだろうに
structとclassは定義時のデフォルトがpublicになるか否か以外言語仕様上違いが無いんだよ
struct A;
class A;
どちらもクラスAの宣言
490デフォルトの名無しさん (ワッチョイ 5f01-S/NQ)
2019/09/28(土) 23:03:45.92ID:xM8alBMg0491デフォルトの名無しさん (アウアウカー Sa9b-4W5P)
2019/09/28(土) 23:08:03.45ID:LlqNH2NPa 前方宣言でclassとstructを変えることによるメリットは?
492デフォルトの名無しさん (ワッチョイ 0701-srNF)
2019/09/28(土) 23:08:10.20ID:eyOXXdxS0 こんな糞議論しなきゃならん時点で有害だわ
493デフォルトの名無しさん (ワッチョイ c7c3-+MBy)
2019/09/28(土) 23:11:12.80ID:X/zAGzhO0 むしろ合わせなきゃいけない意味がわからん
他人のカスタマイズ用のtemplate classでそれがclassだったかstructだったかを正しく覚えてなきゃいけないとか
他人のカスタマイズ用のtemplate classでそれがclassだったかstructだったかを正しく覚えてなきゃいけないとか
494デフォルトの名無しさん (ワッチョイ 5f77-4W5P)
2019/09/28(土) 23:15:06.74ID:y4xgEID10 使うだけならclassかstructか書く必要ないし修正を加えるなら必然的にソースコード見るだろ
495デフォルトの名無しさん (ワッチョイ c7c3-+MBy)
2019/09/28(土) 23:20:24.74ID:X/zAGzhO0 いやだから特殊化するときだって
496デフォルトの名無しさん (ワッチョイ 5f61-81Gp)
2019/09/28(土) 23:39:09.23ID:lqPuvWRw0 Aaaa を完全定義をする前に Aaaa 型へのポインタを宣言したい場合に不完全定義として
struct Aaaa;
としておき、後から完全定義として
class Aaaa {
int data1; // class なのでデフォルトのアクセス属性は private 属性。
・・・
};
を与えた時、struct と class の違いでエラーにするかどうかの議論ですね。
そして、完全定義したときにだけしか、デフォルトのアクセス制御の public/private の違いは
出てこないので、エラーにする必要が特に無い、という説が出てきていると。
struct Aaaa;
としておき、後から完全定義として
class Aaaa {
int data1; // class なのでデフォルトのアクセス属性は private 属性。
・・・
};
を与えた時、struct と class の違いでエラーにするかどうかの議論ですね。
そして、完全定義したときにだけしか、デフォルトのアクセス制御の public/private の違いは
出てこないので、エラーにする必要が特に無い、という説が出てきていると。
497デフォルトの名無しさん (ワッチョイ 5f6e-kLFp)
2019/09/28(土) 23:52:31.71ID:LuoDMBWx0 極めてくだらない話題だね
498デフォルトの名無しさん (ワッチョイ 5f3d-HmT3)
2019/09/29(日) 00:41:54.75ID:7gP8emxb0499デフォルトの名無しさん (ワッチョイ 5f3d-HmT3)
2019/09/29(日) 00:42:57.02ID:7gP8emxb0 名前が衝突した異なる型として
500デフォルトの名無しさん (アウアウウー Sa8b-Sxlc)
2019/09/29(日) 00:49:05.52ID:sIVLKl19a ちょっと関係ある話なんだけどマングリングていう単語、なんかちょっとエロ要素あるよね
501デフォルトの名無しさん (ワッチョイ c7e8-upKm)
2019/09/29(日) 01:54:53.34ID:hPYugyVf0 pimpleやるときは前方宣言無いと辛いと思う。
502デフォルトの名無しさん (ワッチョイ c7e8-upKm)
2019/09/29(日) 02:00:50.57ID:hPYugyVf0 前方宣言でclassとstructが違うとユーザーコード書くとき気持ち悪くね?
503デフォルトの名無しさん (ワッチョイ 47f6-rP+5)
2019/09/29(日) 07:26:51.75ID:MP9GBJ110 ピンプるときは宣言を書いたのと同一人物が定義も書くだろ
そこで間違えるとしたら相当に頓馬なやつだぞ
自分の癖さえ忘れるのは認知症だぜ
# hashを特殊化するときなんかは間違えないように気をつけている
そこで間違えるとしたら相当に頓馬なやつだぞ
自分の癖さえ忘れるのは認知症だぜ
# hashを特殊化するときなんかは間違えないように気をつけている
504デフォルトの名無しさん (ワッチョイ 5f61-81Gp)
2019/09/29(日) 09:31:02.95ID:sih8o/+S0 >>498
むしろ、完全定義されていない限りメンバ関数もメンバ変数も何一つ
使えないために、private/publicのデフォルト・アクセス属性の違いの
影響がでないからこそ、完全定義より前の不完全定義は、structと
classの違いを問わないでいいとも考えられる。
むしろ、完全定義されていない限りメンバ関数もメンバ変数も何一つ
使えないために、private/publicのデフォルト・アクセス属性の違いの
影響がでないからこそ、完全定義より前の不完全定義は、structと
classの違いを問わないでいいとも考えられる。
505デフォルトの名無しさん (ワッチョイ 5f3d-HmT3)
2019/09/29(日) 12:45:52.46ID:7gP8emxb0 >>504
型付き言語は型に関するプログラマーの間違いを指摘するのが優先
型推論が行えるときに型推論してタイピング量を減らせる手段「も」提供するのが第二優先
この優先順序を取り違えて良いものなら型無し言語を選択するほうが合理的である
つまり型付き言語のコンパイラーが型の誤り(デフォルト公開属性がpublicなstructとprivateなclass間の誤り)を
許すような振る舞いをするのは、現実に問題にならないとしても、道理に合わない
型の名前だけ宣言したくてclassかstructかの違いはどうでも良いなら、そういう意味のキーワードが用意されるべきなんじゃ
型付き言語は型に関するプログラマーの間違いを指摘するのが優先
型推論が行えるときに型推論してタイピング量を減らせる手段「も」提供するのが第二優先
この優先順序を取り違えて良いものなら型無し言語を選択するほうが合理的である
つまり型付き言語のコンパイラーが型の誤り(デフォルト公開属性がpublicなstructとprivateなclass間の誤り)を
許すような振る舞いをするのは、現実に問題にならないとしても、道理に合わない
型の名前だけ宣言したくてclassかstructかの違いはどうでも良いなら、そういう意味のキーワードが用意されるべきなんじゃ
506デフォルトの名無しさん (ワッチョイ 5f01-S/NQ)
2019/09/29(日) 12:53:43.24ID:C35/CdkS0 classに関するc++の言語仕様とそのグレーゾーンのコンパイラ依存の話であって
型付き言語のあるべき論語ったところでしょうがないでしょ
本来言語仕様でstructとclassは型的に同じか否かが明言されてればそれで終了の話
道理はどちらでも通る
型付き言語のあるべき論語ったところでしょうがないでしょ
本来言語仕様でstructとclassは型的に同じか否かが明言されてればそれで終了の話
道理はどちらでも通る
507デフォルトの名無しさん (ワッチョイ c7c3-+MBy)
2019/09/29(日) 13:01:37.41ID:OYiClG3B0 言語仕様上は同じであることが明記されているし、それは書籍やweb上でも触れられている
重箱の隅ではなく常識として理解していたのだが
同じだと覚えて、その通りに使ったのに、msvcに移植する段になって奇妙な現象として実体化するのが問題
重箱の隅ではなく常識として理解していたのだが
同じだと覚えて、その通りに使ったのに、msvcに移植する段になって奇妙な現象として実体化するのが問題
508デフォルトの名無しさん (ワッチョイ 5f3d-HmT3)
2019/09/29(日) 13:14:20.90ID:7gP8emxb0 >>506
>classに関するc++の言語仕様とそのグレーゾーンのコンパイラ依存の話
non
カプセル化の遵守を口にしつつ、前方宣言の記述をちょっとサボりたいがだけのために
デフォルト公開属性がpublicなstructと
デフォルト公開属性がprivateなclassをad-hocに同一視するええかげんな体系が有り得るのかという話
同一視する意図が無くかつ名前だけの前方宣言をしたいならば、名前だけ宣言する意味のキーワードでやれば無問題
無理矢理別の意味がまとわりついたキーワードを流用するのでは
コンパイラもコードを書いたプログラマーも表現を全うしたことにならず気持ち悪かろう
>classに関するc++の言語仕様とそのグレーゾーンのコンパイラ依存の話
non
カプセル化の遵守を口にしつつ、前方宣言の記述をちょっとサボりたいがだけのために
デフォルト公開属性がpublicなstructと
デフォルト公開属性がprivateなclassをad-hocに同一視するええかげんな体系が有り得るのかという話
同一視する意図が無くかつ名前だけの前方宣言をしたいならば、名前だけ宣言する意味のキーワードでやれば無問題
無理矢理別の意味がまとわりついたキーワードを流用するのでは
コンパイラもコードを書いたプログラマーも表現を全うしたことにならず気持ち悪かろう
509デフォルトの名無しさん (ワッチョイ 5f3d-HmT3)
2019/09/29(日) 13:15:48.60ID:7gP8emxb0510デフォルトの名無しさん (ワッチョイ 5f01-S/NQ)
2019/09/29(日) 13:17:48.47ID:C35/CdkS0 >>508
gcc/clangでは通ること把握してるか?
gcc/clangでは通ること把握してるか?
511デフォルトの名無しさん (ワッチョイ 5f01-S/NQ)
2019/09/29(日) 13:29:13.33ID:C35/CdkS0 >>508
> カプセル化の遵守を口にしつつ、前方宣言の記述をちょっとサボりたいがだけのために
なんかお前は大きな勘違いしてる気がしてならないんだけど
前方宣言でclassと書こうかstructと書こうがカプセル化に何も影響ないだろ
なにがサボリなんだ?
classのかわりにstructと書いたらむしろ1文字多いのだが
> カプセル化の遵守を口にしつつ、前方宣言の記述をちょっとサボりたいがだけのために
なんかお前は大きな勘違いしてる気がしてならないんだけど
前方宣言でclassと書こうかstructと書こうがカプセル化に何も影響ないだろ
なにがサボリなんだ?
classのかわりにstructと書いたらむしろ1文字多いのだが
512デフォルトの名無しさん (ワッチョイ bfad-S/NQ)
2019/09/29(日) 13:32:40.67ID:qbYXpMyS0 C++例外の功罪について騙りたい。
513デフォルトの名無しさん (ワッチョイ 5f52-k+Ie)
2019/09/29(日) 13:37:04.22ID:k4CvVXqN0 >>512
語るのはいいが騙るなよ
語るのはいいが騙るなよ
514デフォルトの名無しさん (ワッチョイ 5f52-k+Ie)
2019/09/29(日) 13:39:29.17ID:k4CvVXqN0 >>508
C/C++には安易に予約語を増やさないというポリシーがあったと思うし、こんなレアで下らない例外ケースのために予約語を増やすのは賛同されないだろうよ。
C/C++には安易に予約語を増やさないというポリシーがあったと思うし、こんなレアで下らない例外ケースのために予約語を増やすのは賛同されないだろうよ。
515デフォルトの名無しさん (ワッチョイ 5ff9-kLFp)
2019/09/29(日) 13:40:32.98ID:eQVILPNx0 >言語仕様上は同じであることが明記されているし、
これが本当なら、とっくに規格厨が該当箇所を引用してくれてそうなんだけど
これが本当なら、とっくに規格厨が該当箇所を引用してくれてそうなんだけど
516デフォルトの名無しさん (ワッチョイ 5f61-81Gp)
2019/09/29(日) 13:54:55.39ID:sih8o/+S0 >>508
>カプセル化の遵守を口にしつつ、前方宣言の記述をちょっとサボりたいがだけのために
不完全定義の主な目的は完全定義をサボるためではありません。
自己参照や、2つの構造体 A, B が有った場合、お互いに互い違い
に参照したい場合にどうしても必要だったので、pure C の時代から用意されて
いました。なお、ここでの参照とは、ポインタ * による参照です。pure C の
時代には、C++の & による参照はありませんでしたので。
>カプセル化の遵守を口にしつつ、前方宣言の記述をちょっとサボりたいがだけのために
不完全定義の主な目的は完全定義をサボるためではありません。
自己参照や、2つの構造体 A, B が有った場合、お互いに互い違い
に参照したい場合にどうしても必要だったので、pure C の時代から用意されて
いました。なお、ここでの参照とは、ポインタ * による参照です。pure C の
時代には、C++の & による参照はありませんでしたので。
517デフォルトの名無しさん (ワッチョイ 071a-kLFp)
2019/09/29(日) 13:58:57.67ID:UVnMNq400 https://timsong-cpp.github.io/cppwp/n4659/dcl.type.elab#3
> ..., the union class-key shall be used to refer to a union, and either the class or struct class-key shall be used to refer to a class declared using the class or struct class-key.
> ..., the union class-key shall be used to refer to a union, and either the class or struct class-key shall be used to refer to a class declared using the class or struct class-key.
518デフォルトの名無しさん (ワッチョイ 5f61-81Gp)
2019/09/29(日) 14:12:32.56ID:sih8o/+S0519デフォルトの名無しさん (ワッチョイ 5f01-Gn+r)
2019/09/29(日) 14:21:31.78ID:qdFsd7WD0520デフォルトの名無しさん (ワッチョイ 5f61-81Gp)
2019/09/29(日) 14:25:33.96ID:sih8o/+S0 >>518
再訂正です。
pure C だと、タグ名だけでは型名にならず、class key を直前に書く必要が
ありました。つまり、struct Aaa {・・・} という完全定義の場合、
・・・の部分で自己参照をする場合、C++ だと Aaa *pX; で良いのですが、
pure C だと struct Aaa *pX; と書く必要があります。だから、こんな感じに
書く必要がありました。
struct Aaa {
struct Aaa *pX;
・・・
};
これは書くのがめんどくさいので、多くの人が
typedef struct _Aaa Aaa; // 不完全定義と typedef の組み合わせ
struct _Aaa {
Aaa *pX;
・・・
};
としていたのです。そのために、自己参照のためには、不完全定義が
ほぼ必須となっていたのでした。C++の場合は、typedef しなくても
class key なしのタグ名そのものが型名としても使えるので上記の様な
ことが必要なくなり、自己参照では不完全定義がいらなくなったのです。
再訂正です。
pure C だと、タグ名だけでは型名にならず、class key を直前に書く必要が
ありました。つまり、struct Aaa {・・・} という完全定義の場合、
・・・の部分で自己参照をする場合、C++ だと Aaa *pX; で良いのですが、
pure C だと struct Aaa *pX; と書く必要があります。だから、こんな感じに
書く必要がありました。
struct Aaa {
struct Aaa *pX;
・・・
};
これは書くのがめんどくさいので、多くの人が
typedef struct _Aaa Aaa; // 不完全定義と typedef の組み合わせ
struct _Aaa {
Aaa *pX;
・・・
};
としていたのです。そのために、自己参照のためには、不完全定義が
ほぼ必須となっていたのでした。C++の場合は、typedef しなくても
class key なしのタグ名そのものが型名としても使えるので上記の様な
ことが必要なくなり、自己参照では不完全定義がいらなくなったのです。
521デフォルトの名無しさん (ワッチョイ bfad-S/NQ)
2019/09/29(日) 14:26:04.79ID:qbYXpMyS0 「カジュアルに警察や救急車呼ぶ」が物議 「適切な通報」か「ただの自己中」なのか? | キャリコネニュース
https://news.careerconnection.jp/?p=41755
C++例外をthrowすることの是非論に近いものがあると思う。
https://news.careerconnection.jp/?p=41755
C++例外をthrowすることの是非論に近いものがあると思う。
522デフォルトの名無しさん (ワッチョイ 5f7c-Yj7W)
2019/09/29(日) 23:03:45.90ID:X3J8cFgd0 そんなにどうしても例外について話し合いたいならこちらへどうぞ
https://qiita.com/notenopg/items/40571e69986a58b888a0
https://qiita.com/notenopg/items/40571e69986a58b888a0
523デフォルトの名無しさん (ワッチョイ c7c3-+MBy)
2019/09/29(日) 23:55:06.58ID:OYiClG3B0 >>519
517じゃないの?
517じゃないの?
524デフォルトの名無しさん (ワッチョイ 077b-88hv)
2019/09/30(月) 01:03:02.50ID:nHYsjKbQ0 つかお前ら解散して、本スレに行け。邪魔だ。
日本語読めない馬鹿韓国人>>488もな。
C++相談室 part145
https://mevius.5ch.net/test/read.cgi/tech/1568362404/
お前らの言うとおり、お前らと話しても時間の無駄だ。
文句を言われながらいちいち教えてやる意味はないから当然止める。
俺が422への講評を投稿することはない。タダ乗り狙いの馬鹿共はさっさと本スレに行け。
ただそれ以前に、俺がいくら書いてもどうせ読めないし、技術的にも理解出来るレベルにない。
正直、ここまでお前らが馬鹿だったのには驚いた。
ここで乗ってこないからお前らは馬鹿のままなんだ。聞くは一時の恥、聞かぬは一生の恥だ。
お前らは自分が馬鹿にされるのが怖くて何も言い出せず、安全地帯からクレクレ君だ。
ゆとりはネットの使い方を根本的に分かってない。
デジタルネイティブだから分かっていると勝手に信じ切っているが、それは完全な勘違いだ。
お前らは、今日ネットに向かって何か書いた後、書く前と比べて少しでも成長しているか?
コードを読む/書くのに時間がかかるのなら、それはお前らのプログラミング能力が足りないからだ。
それはやれば上達するし、やらないと上達はしない。つまり、やれば実になるものだ。
お前らゆとりはそういう地道な練習をしようともせず、ここでひたすら罵詈雑言だ。
それで何か得た物があったか?
こういう機会に地道にコードに向き合っている奴とはどんどん差が付く。そして今がある。
お前らはレベルの低さを自覚した方がいい。
そしてC++だけやっていても『今風の』プログラミングは学べない。それも知っておいた方がいい。
日本語読めない馬鹿韓国人>>488もな。
C++相談室 part145
https://mevius.5ch.net/test/read.cgi/tech/1568362404/
お前らの言うとおり、お前らと話しても時間の無駄だ。
文句を言われながらいちいち教えてやる意味はないから当然止める。
俺が422への講評を投稿することはない。タダ乗り狙いの馬鹿共はさっさと本スレに行け。
ただそれ以前に、俺がいくら書いてもどうせ読めないし、技術的にも理解出来るレベルにない。
正直、ここまでお前らが馬鹿だったのには驚いた。
ここで乗ってこないからお前らは馬鹿のままなんだ。聞くは一時の恥、聞かぬは一生の恥だ。
お前らは自分が馬鹿にされるのが怖くて何も言い出せず、安全地帯からクレクレ君だ。
ゆとりはネットの使い方を根本的に分かってない。
デジタルネイティブだから分かっていると勝手に信じ切っているが、それは完全な勘違いだ。
お前らは、今日ネットに向かって何か書いた後、書く前と比べて少しでも成長しているか?
コードを読む/書くのに時間がかかるのなら、それはお前らのプログラミング能力が足りないからだ。
それはやれば上達するし、やらないと上達はしない。つまり、やれば実になるものだ。
お前らゆとりはそういう地道な練習をしようともせず、ここでひたすら罵詈雑言だ。
それで何か得た物があったか?
こういう機会に地道にコードに向き合っている奴とはどんどん差が付く。そして今がある。
お前らはレベルの低さを自覚した方がいい。
そしてC++だけやっていても『今風の』プログラミングは学べない。それも知っておいた方がいい。
525デフォルトの名無しさん (アウアウウー Sa8b-5975)
2019/09/30(月) 01:26:18.80ID:29SpHEC8a (今風のプログラミングって何だろう?)
526デフォルトの名無しさん (ワッチョイ bfad-S/NQ)
2019/09/30(月) 02:19:28.56ID:yat9MmGu0 スマートポインタの積極利用でしょ。
527デフォルトの名無しさん (アウアウウー Sa8b-lq/4)
2019/09/30(月) 19:20:32.40ID:h36FzTTWa C言語で今風プログラミングしてください。
528デフォルトの名無しさん (ワッチョイ c76e-kLFp)
2019/09/30(月) 19:29:26.35ID:d3KN1ocd0 C言語で今風のスクリプトのインタプリタを実装します
スクリプトでプログラムを書きます
スクリプトでプログラムを書きます
529488 (ワッチョイ 47f6-rP+5)
2019/09/30(月) 20:29:16.61ID:ajIYYysl0 > 文句を言われながらいちいち教えてやる意味はないから当然止める。
ああやめろ
おまえ自分の言ったことちゃんと実行しろよ
どうせ三日坊主で我慢できなくなってしゃしゃり出てくるんだろうけどよw
ああやめろ
おまえ自分の言ったことちゃんと実行しろよ
どうせ三日坊主で我慢できなくなってしゃしゃり出てくるんだろうけどよw
530デフォルトの名無しさん (ワッチョイ 39da-kQ9i)
2019/10/03(木) 20:02:50.87ID:pspZZwZs0 ならクラス分けのやり方に役立つ知識をくれ!!!!
531デフォルトの名無しさん (ワッチョイ 0a3a-exW2)
2019/10/03(木) 23:48:30.19ID:doxd0JNA0 自分の中の知識や経験からくる予断にひきずられずにそのプログラムの仕様・要件にのみ従って設計すんだよ
532デフォルトの名無しさん (ワッチョイ 6a18-M8t1)
2019/10/04(金) 08:24:01.39ID:MVQV/kgg0 それは無理
つーか動きゃいいんだって態度の素だぞそれ
1つの目標に対して複数の実現手段がある中から
どれがベストかという判断は知識や経験によるところが大きい
つーか動きゃいいんだって態度の素だぞそれ
1つの目標に対して複数の実現手段がある中から
どれがベストかという判断は知識や経験によるところが大きい
533デフォルトの名無しさん (ブーイモ MM8e-kQ9i)
2019/10/04(金) 09:31:44.81ID:2obfK/LZM それホントにベスト?
534デフォルトの名無しさん (ワッチョイ 6a18-M8t1)
2019/10/04(金) 09:49:11.29ID:MVQV/kgg0 何を基準にベストというかも知識と経験によるところが大きい
535デフォルトの名無しさん (ワッチョイ 6a7c-0RA9)
2019/10/04(金) 10:31:32.01ID:1z0FSbuq0 まぁでも動きゃいいんだよ
すくなくとも動かないより大分良い
後、変に拘ってて糞みたいなやつより
素直なのがいい
すくなくとも動かないより大分良い
後、変に拘ってて糞みたいなやつより
素直なのがいい
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 自民・麻生太郎 副総裁 石破政権の1年は「どよーん」 高市政権の発足で「何となく明るくなった」「世の中のことが決まり動いている」 [Hitzeschleier★]
- 東京都「都民の税金1.5兆円が国に奪われている」「全国に分配されている」に地方民ブチギレ [Hitzeschleier★]
- JA全農が「新おこめ券」…来年9月末の有効期限を新設、必要経費のみ上乗せ [蚤の市★]
- 【27歳会社員】「自慰行為に使うために」コインランドリーの乾燥機から24歳女性の下着など計11点(時価8万2080円相当)盗んだ疑い [nita★]
- 【おこめ券】鈴木憲和農相 小泉前農相の備蓄米放出を“反省”「備蓄の円滑な運営を図ってまいります」 [Hitzeschleier★]
- 1人3千円の食品高騰対策、何に使える? あいまいなまま衆院通過 [蚤の市★]
- 【実況】博衣こよりのえちえちダンガンロンパ2🧪★3
- ジャップ「カントの純粋理性批判読むお!!!」⇒全員上巻で挫折 俺恥ずかしいよ…😭 [731544683]
- トランプ、G7に代わるcore 5を発表 [805596214]
- 麻生太郎が石破政権の1年を酷評「どよーんとして何も動かない感じだったな。それに引き換え高市政権は物事が動いている」 [597533159]
- 【速報】室井佑月、米山隆一との離婚を決意wwwwwwwwwwwwwwwwwwww [802034645]
- 【実況】博衣こよりのえちえちダンガンロンパ2🧪★4
