[過去ログ] C++相談室 part130 [無断転載禁止]©2ch.net (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
53: (ワッチョイ fb4a-TXVw) 2017/04/06(木)18:53 ID:H/56SjdK0(2/4) AAS
>>51
エラーの出た行を3回ほど確認しましたが全角文字は見当たりませんでした

>>52
外部リンク:ponk.jp」です
54
(1): (オッペケ Sr57-GJ90) 2017/04/06(木)19:06 ID:zY+rYc0kr(2/2) AAS
そりゃpriorityの後に変な文字が入ってるからな
U+200EはC++で使っていい文字に入っていない
55
(1): (ワッチョイ f22a-UNHW) 2017/04/06(木)19:17 ID:NIAe6HmI0(1) AAS
確かに67行目と80行目の"priority"の右に見えない文字 (LRM) が入ってるね
なんでこんなもんが紛れてるのか謎だけどそれを消せばコンパイル通るんじゃない
56: (ワッチョイ fb4a-TXVw) 2017/04/06(木)19:19 ID:H/56SjdK0(3/4) AAS
>>54
今まで見るだけの確認作業してましたがpriorityの直後でdeleteキー押したら確かに謎の文字が消えました!

>>51-52>>54
質問に答えていただきありがとうございました
57
(1): (ワッチョイ fb4a-TXVw) 2017/04/06(木)19:23 ID:H/56SjdK0(4/4) AAS
>>55
消したらコンパイル通りました

今までは「サイトのコピペ」→「解説読んで納得」→「各文に自分が分かるようにコメント付け」という方法で勉強してたので、
これを機にコピペはやめて全て自分で打ち込むことにします

ありがとうございました
58: (ワッチョイ cf7a-02AM) 2017/04/06(木)20:18 ID:yrLcUnI00(1) AAS
>>42
普通その数字が何を意味するのかすらわからねえよ
59: (ワッチョイ 52c3-7E04) 2017/04/06(木)21:09 ID:i8ka60Xp0(1) AAS
>>42
なんで贈り物送らないといけないのか
60: (ワッチョイ cfb5-H1JN) 2017/04/07(金)00:12 ID:GKfKrOhh0(1) AAS
>>57
コピペ後に理解というやり方から
理解した上で打ち込むって考え方がいいと思うよ

実務でも似たような処理をコピペした時に
別の変数参照するように変える必要があったのに
1ヶ所変え忘れて問題になった何て言う事例もありがち
61: (ワッチョイ d2ed-2ODd) 2017/04/07(金)00:44 ID:T22AFNFv0(1) AAS
勉強中は兎も角、実務でコピペコーディングしてバグ仕込むとか入念に拷問した後死刑でも仕方ないレベルだからな
62: (ワッチョイ cf7a-02AM) 2017/04/07(金)01:17 ID:hMKnjdw+0(1) AAS
そんなにコピペすることってあるか?
63: (ワッチョイ 0775-yu7M) 2017/04/07(金)02:53 ID:k32kujyO0(1) AAS
ないアルよ
64: (ワッチョイ fb79-xvm/) 2017/04/07(金)03:15 ID:2Lzx/lCN0(1) AAS
まあ、スニペットなんて言い方してても実態はコピペだからな。
65: (ワッチョイ 2213-D6lx) 2017/04/07(金)12:08 ID:9gQAwyyc0(1) AAS
プログラミングなんて同じことの繰り返しなんだから、コピペで済ませたほうがいいよ
66: (スップ Sdb2-C2yt) 2017/04/07(金)12:42 ID:ykM1heJrd(1) AAS
コード書いてていうほどコピペしなくね
67: (ワッチョイ 138f-+TA9) 2017/04/07(金)14:14 ID:FkJcTuLk0(1/2) AAS
コピペしなきゃいけない自分が情けなくなるね
同じことを二度は言わないスマートさが足りないんだって
68
(1): (JP 0H2e-TKAZ) 2017/04/07(金)15:08 ID:4pSi19lZH(1) AAS
static int a[]; // prototype
static int a[] = {1,2,3,4};
int getitem(int n) {
return a[n];
}

このコード、
gcc -Wall -c -o hoge.o hoge.c
だったら何のエラーも警告も出ないけど、
g++ -Wall -c -o hoge.o hoge.c
だとaのサイズがわからん、とエラーになるんですが、
省1
69
(1): (ワッチョイ 138f-+TA9) 2017/04/07(金)17:44 ID:FkJcTuLk0(2/2) AAS
namespace
{
extern int a[]; // prototype
int a[] = {1,2,3,4};
}

int getitem(int n) {
return a[n];
}
70: (オッペケ Sr57-GJ90) 2017/04/08(土)12:17 ID:TFmwEDa6r(1/2) AAS
extern int a[]; はprototypeじゃないけどな
71
(1): (ワッチョイ cf59-dxaC) 2017/04/08(土)13:44 ID:L4KgTOQ90(1) AAS
未だにexternの役割がよくわかんね;
付けなくても宣言できて勝手に外部リンケージになるし…
K&R本はどっか行った;
72: (ワッチョイ 138f-+TA9) 2017/04/08(土)16:54 ID:LBU0hU+r0(1/2) AAS
実体を定義するのかしないのか曖昧なところをはっきりさせたり
デフォで内部結合なものを強制的に外部結合させたり

無名namespaceは逆で強制的に外部結合なものに妨害工作する
73: (アウアウイー Sa97-lIlP) 2017/04/08(土)17:25 ID:8P1QJwbCa(1/3) AAS
>>69の方がC++としてモダンなのはわかるが、>>68がC++だけエラーになる理由がわからん。
gcc以外のコンパイラでもだめなんだろうか?
74: (ワッチョイ fb56-Hufg) 2017/04/08(土)17:34 ID:8rt7+cSn0(1) AAS
//static int a[]; // prototype
static int a[] = {1,2,3,4};

これでOK
75
(2): (アウアウイー Sa97-lIlP) 2017/04/08(土)17:54 ID:8P1QJwbCa(2/3) AAS
↓みたいに、相互参照するstaticなデータを初期化するときはどうするのよ?
こういうのは、CとC++で互換性あるコードは書けんのかね?
#include <stdio.h>

struct A {
char *s;
struct A *p;
};

static struct A a[];
static struct A b[] = {{"1st in b[]", a}, {"2nd in b[]", a+1}};
static struct A a[] = {{"1st in a[]", b}, {"2nd in a[]", b+1}};
省5
76: (ワッチョイ 36a3-D6lx) 2017/04/08(土)18:22 ID:lscI+aDp0(1) AAS
前方宣言の方のstaticを削りゃいいんじゃね?
77
(1): 片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd92-+G+c) 2017/04/08(土)18:29 ID:QtLPEhOXd(1) AAS
static変数を別の翻訳単位から参照するのはおかしいんじゃね? 俺だったらexternにするぞ。
78: (ワッチョイ 72cc-n0J+) 2017/04/08(土)20:50 ID:N0c155CY0(1) AAS
K&RならC勉強していた女子社員にやったわ
姉貴が蛍光ペンで目茶苦茶にしてくれたからもう要らなかったんけどねw
79: ◆QZaw55cn4c (ワッチョイ beff-rt0y) 2017/04/08(土)21:28 ID:gcfXcmks0(1/2) AAS
>>71
lib や *.o を単独で配布して,そのヘッダを書くとき(lib/o の中に静的変数がある)ときは,extern はないと困るだろうな,とは思う
extern 不要論を連呼するキチガイがいるらしいから,注意したほうがいい
80
(1): (ワッチョイ be14-4Usw) 2017/04/08(土)21:34 ID:ATd5Gv2i0(1) AAS
でも実際extern からアクセスしろってライブラリは見たこと無い
普通関数じゃね?
81: (ワッチョイ 72cd-8Vmj) 2017/04/08(土)21:38 ID:J+fRzcYw0(1) AAS
クソライブラリを使うときにexternないと困るな
82: ◆QZaw55cn4c (ワッチョイ beff-rt0y) 2017/04/08(土)21:39 ID:gcfXcmks0(2/2) AAS
>>80
例えば <cstdio> の FILE *stdout とか

外部のライブラリの中の静的変数へのプロトタイプとして
FILE *stdout;
て書くと多分そのモジュールに stdout が確保されてしまうんじゃないかな?
関数は
int f();
だけで実体がないのだったらプロトタイプだとわかるけれども
変数は実体を伴うのか参照なのかを区別できない気がする

関数だけ提供するライブラリが存在するのは理解できる
83
(1): (ワッチョイ 138f-+TA9) 2017/04/08(土)21:56 ID:LBU0hU+r0(2/2) AAS
>>75
つ__cplusplus
84
(1): (オッペケ Sr57-GJ90) 2017/04/08(土)23:26 ID:TFmwEDa6r(2/2) AAS
externの必要性をとうとう理解してしまったQ
それに対し相変わらずコミュ障のもう一人のクソコテ
85
(2): (アウアウイー Sa97-lIlP) 2017/04/08(土)23:36 ID:8P1QJwbCa(3/3) AAS
>>83
#ifdef __cplusplus
#define _static
#define _extstatic extern
namespace {
#else
#define _static static
#define _extstatic static
#endif

_extstatic struct A a[];
省7
86: (ワッチョイ 7f8c-7E04) 2017/04/08(土)23:39 ID:bfo0YVHI0(1) AAS
>>85
わざわざc使わなくてもc++だけでよかでしょ?
87: (ワッチョイ cf7a-02AM) 2017/04/09(日)00:00 ID:cP8aqgv30(1) AAS
Cでも使いたい人には自分でラッパー作ってくれと言ってるわ
88: (オッペケ Sr57-GJ90) 2017/04/09(日)00:52 ID:djBIOydUr(1/9) AAS
>>85
>こんだけ書けばCでもC++でも無警告でコンパイル通ったけど
そんな文法違反な糞コードを「ボクのパソコンでは動いたもん」みたいに自慢されても…
89: (オッペケ Sr57-GJ90) 2017/04/09(日)01:02 ID:djBIOydUr(2/9) AAS
>>77
ひょっとして、もしかするとお前の頭では
「extern」=「外部リンケージ」なのか?
90: 片山博文MZ ◆T6xkBnTXz7B0 (スププ Sd92-+G+c) 2017/04/09(日)07:01 ID:qFsmFYyfd(1/3) AAS
わっしょい、わっしょい
91: 片山博文MZ ◆T6xkBnTXz7B0 (スププ Sd92-+G+c) 2017/04/09(日)07:08 ID:qFsmFYyfd(2/3) AAS
自分の理解できないことを、何でもコミュ症で片付けるやつ、嫌い。
92: 片山博文MZ ◆T6xkBnTXz7B0 (スププ Sd92-+G+c) 2017/04/09(日)07:13 ID:qFsmFYyfd(3/3) AAS
言語障害って日本語があるのに、何で意味不明な略したりするのかな。臆病者だから?
93
(1): ◆QZaw55cn4c (ワッチョイ beff-rt0y) 2017/04/09(日)07:31 ID:ArlDNXBP0(1) AAS
>>84
ところが C には仮定義というものがあって,仮定義しておけば静的変数を共有できるんだよ
だから extern は要らない子!と主張できるんだ
ここは C++ だから,仮定義が出来ない前提で話しているだけだよ

君はまだまだ浅いね
94
(1): (オッペケ Sr57-GJ90) 2017/04/09(日)08:37 ID:djBIOydUr(3/9) AAS
>>93
ん?extern要らない説の根拠は(翻訳単位に閉じた)仮定義じゃなくて
リンカが頑張ることだったと記憶していたのだが
ひょっとしてもしかすると、アフォ?
95: (ワッチョイ 130e-+TA9) 2017/04/09(日)09:10 ID:A2LIIX7y0(1/2) AAS
仮定義はリンカが頑張って実現してるんだが
リンカのマップ情報とか見たことないの?
96: (オッペケ Sr57-GJ90) 2017/04/09(日)09:37 ID:djBIOydUr(4/9) AAS
なるほど
仮定義というものが何なのか理解していないのでこういうとんちんかんな発言になるのだな
97: (ワッチョイ 130e-+TA9) 2017/04/09(日)10:11 ID:A2LIIX7y0(2/2) AAS
それはこっちの台詞だyo
98
(2): (ワッチョイ cf59-dxaC) 2017/04/09(日)10:30 ID:elB46Etj0(1/6) AAS
仮定義ってなんだっけ
extern int a; が複数の翻訳単位にあったら勝手にaの実体が1個できるというやつだっけ;
C++には無いの?(驚愕
99
(2): ◆QZaw55cn4c (ワッチョイ bf35-D1KF) 2017/04/09(日)10:53 ID:Cfl4+wb20(1/3) AAS
>>98
仮定義はリンカにおんぶにだっこしてもらう仕様だよ
extern を書かなくてもいい、というものだ
実体を持たない普通の外部変数と同じように
int evil_global;
とか書くだけでいい、ヘッダに extern int evil_global; と書く必要がなくなる(宣言部分での初期化はできないことに注意)

いやまあ、ちょっと追いきれていないところがあって、まだ俺も浅いのはみとめるが、とりあえず C++ にはないので、みなかったことにしている
議論が続きそうだが俺は参加しないよ
100
(1): ◆QZaw55cn4c (ワッチョイ bf35-D1KF) 2017/04/09(日)10:53 ID:Cfl4+wb20(2/3) AAS
>>94
仮定義は翻訳単位に閉じたとはいいきれないよ
101: (ワッチョイ bf35-D1KF) 2017/04/09(日)11:04 ID:Cfl4+wb20(3/3) AAS
>>99
訂正するね
誤:実体を持たない普通の外部変数と同じように
正:実体を持たない外部変数であっても
なんか訂正しきれていないきもするが
102
(3): (オッペケ Sr57-GJ90) 2017/04/09(日)17:20 ID:djBIOydUr(5/9) AAS
>>98
>複数の翻訳単位にあったら勝手にaの実体が1個
それはQの妄想というやつで仮定義とは別
なおISO/ IEC 9899:2011では未定義動作になっているので仮に実体が一個になっても違反ではない
103
(1): (ワッチョイ cf59-dxaC) 2017/04/09(日)19:24 ID:elB46Etj0(2/6) AAS
「仮定義」でググッたらあったわ;
外部リンク[html]:docs.embarcadero.com

extern、static、初期化のいずれも無しの変数宣言っぽいものが(関数外のスコープで)複数個現れたとき、
C言語規格の方が高度なことをしてくれるのか
(C++では>>102によると未定義動作とのことなので同じ結果になるかどうかは規格外の仕様に拠る。

しかし上の説明だけでは関数宣言にexternを付ける意味がまだわかんね;
104: (ワッチョイ f6bc-+TA9) 2017/04/09(日)19:56 ID:9WDYOgp70(1/4) AAS
>>102
もはや何を言っているのかしどろもどろだな
未定義の動作は何が起きても構わないが、
その内容に依存するコードが違反かどうかもわからないクルクルパーはお気の毒
105
(1): (ワッチョイ cf59-dxaC) 2017/04/09(日)20:10 ID:elB46Etj0(3/6) AAS
いやすまん「規格外の仕様に拠る」はやや誤解して書いてたわ;
下記の通り、未定義動作を含むコードは合法には成り得ず、実行できるかもしれないが、結果は保証されない。(つまり違反
外部リンク[html]:www.c-lang.org
>未定義の動作に対して,その状況を無視して予測不可能な結果を返してもよい。
>翻訳時又はプログラム実行時に,文書化された,環境に特有な方法で処理してもよい(診断メッセージの発行を伴っても伴わなくてもよい。)。
>さらに(診断メッセージを出力し)翻訳又は実行を中断してもよい。

ここで、診断メッセージ云々とか「文書化された,環境に特有な方法で処理」とは安全に実行を止めることを意味する
Windowsでアプリのクラッシュ時に出てくるダイアログとか、コアダンプとかがそれにあたる
106
(3): (ワッチョイ cf59-dxaC) 2017/04/09(日)20:15 ID:elB46Etj0(4/6) AAS
ていうか最初の疑問に戻るんですが、総合すると、CでもC++でも「extern」 = 「外部リンケージ」、でおkなのでは…
ただ外部リンケージの意味で省略可能だったり、
ANSI Cにおいては「仮定義」に関する仕様が追加されてるから話が複雑化したように見えているだけで、
107
(1): (オッペケ Sr57-GJ90) 2017/04/09(日)20:16 ID:djBIOydUr(6/9) AAS
>下記の通り、未定義動作を含むコードは合法には成り得ず

何というか、「下記」のどこを縦読みするとそうなるんだか
108
(1): (ワッチョイ f6bc-+TA9) 2017/04/09(日)20:18 ID:9WDYOgp70(2/4) AAS
>>106
追加じゃなく追認な
109
(1): (ワッチョイ cf59-dxaC) 2017/04/09(日)20:19 ID:elB46Etj0(5/6) AAS
>>107
>翻訳時又はプログラム実行時に,文書化された,環境に特有な方法で処理してもよい
つまり翻訳時にビルドエラーで止めても良い
110
(2): (ワッチョイ cf59-dxaC) 2017/04/09(日)20:34 ID:elB46Etj0(6/6) AAS
>>108
互いに正しく適合する「宣言」と「定義」からなるプログラムにとって「仮定義」の概念は不要なのだから、
この場合何を追認したかというと既存のソースコードにおける「extern」の誤用を追認したとしか考えられないのでは…

つまり言語規格の既存の条項が「追認」されたわけではなく、あくまで条項が「追加」されたんである
(多分「追認」なんて定義もされていないだろうし、
111: (ワッチョイ 722b-Crua) 2017/04/09(日)20:52 ID:k8qrPdcw0(1) AAS
>>106
> 総合すると、CでもC++でも「extern」 = 「外部リンケージ」、でおkなのでは…
ちょっと端折り過ぎかな
n3797(C++14) 7.1.1 Storage class specifiers Example:

static int b; // b has internal linkage
extern int b; // b still has internal linkage
112: (ワッチョイ f6bc-+TA9) 2017/04/09(日)21:03 ID:9WDYOgp70(3/4) AAS
>>110
少なくとも「externの誤用」ではない
externと書かなかった場合のことについてだ
113: (ワッチョイ f6bc-+TA9) 2017/04/09(日)21:04 ID:9WDYOgp70(4/4) AAS
今となっては忸怩たる思いだが
俺は「追認された」張本人の1人であって
114: (オッペケ Sr57-GJ90) 2017/04/09(日)21:32 ID:djBIOydUr(7/9) AAS
>>109
なるほど理解した
まさか>>102から>>105にかけて『違反』という言葉の意味ををすり替えられていたとは気付かなかった失礼
115: (オッペケ Sr57-GJ90) 2017/04/09(日)21:52 ID:djBIOydUr(8/9) AAS
>>110
>「仮定義」の概念は不要なのだから

仮定義が無いと通らない例が>>75で出ているのに
不要である理由の説明も無しにいきなり結論付けられても…
116: (オッペケ Sr57-GJ90) 2017/04/09(日)22:01 ID:djBIOydUr(9/9) AAS
>103
そのサイトのANSI Cの説明は多分ウソだぞ
同じ内容なはずのISO Cはそんな定義じゃないから
117: (ワッチョイ 138f-+TA9) 2017/04/10(月)14:43 ID:DheowmrF0(1/4) AAS
おまえら規格票くらい買うか、せめてドラフトくらい用意しろや
External object definitions
Semantics
If the declaration of an identifier for an object has file scope and an initializer,
the declaration is an external definition for the identifier.
A declaration of an identifier for an object that has file scope without an initializer,
and without a storage-class specifier or with the storage-class specifier static,
constitutes a tentative definition. If a translation unit contains one or
more tentative definitions for an identifier, and the translation unit contains
no external definition for that identifier, then the behavior is exactly as
省5
118: (ワッチョイ 138f-+TA9) 2017/04/10(月)14:44 ID:DheowmrF0(2/4) AAS
 EXAMPLE 1
  int i1 = 1; // definition, external linkage
  static int i2 = 2; // definition, internal linkage extern
  int i3 = 3; // definition, external linkage
  int i4; // tentative definition, external linkage
  static int i5; // tentative definition, internal linkage
  int i1; // valid tentative definition, refers to previous
  int i2; // 6.2.2 renders undefined, linkage disagreement
  int i3; // valid tentative definition, refers to previous
  int i4; // valid tentative definition, refers to previous
省11
119: (ワッチョイ 138f-+TA9) 2017/04/10(月)14:44 ID:DheowmrF0(3/4) AAS
6.9.2 外部オブジェクト定義
意味規則 オブジェクトの識別子の宣言がファイル有効範囲及び初期化子をもつ場合,その宣言を識別子の外部定義という。
ファイル有効範囲のオブジェクトの識別子を,初期化子を使わず,かつ,記憶域クラス指定子なしか又は記憶域クラス指定子static で宣言する場合,そのオブジェクトの識別子の宣言を仮定義(tentativedefinition)という。
翻訳単位が,ある識別子に対する仮定義を一つ以上含み,かつその識別子に対する外部定義を含まない場合,その翻訳単位に,翻訳単位の終わりの時点での合成型,及び0 に等しい初期化子をもったその識別子のファイル有効範囲の宣言がある場合と同じ規則で動作する。
オブジェクトに対する識別子の宣言が仮定義であり,内部結合をもつ場合,その宣言の型は不完全型であってはならない。
120: (ワッチョイ 138f-+TA9) 2017/04/10(月)14:45 ID:DheowmrF0(4/4) AAS
 例1.
  int i1 = 1; // 定義,外部結合
  static int i2 = 2; // 定義,内部結合
  extern int i3 = 3; // 定義,外部結合
  int i4; // 仮定義,外部結合
  static int i5; // 仮定義,内部結合
  int i1; // 正しい仮定義,前の定義を参照する
  int i2; // 前に内部結合をもつ定義があるため,結合の不一致が生じ,6.2.2 によって動作は未定義となる
  int i3; // 正しい仮定義,前の定義を参照する
  int i4; // 正しい仮定義,前の定義を参照する
省9
121: (オッペケ Sr57-GJ90) 2017/04/10(月)18:45 ID:srG0I8DXr(1/2) AAS
N1570のリンクを貼ったら、真実を知った>>100が傷ついちゃうかも知れないと思って遠慮してた
122
(1): (オッペケ Sr57-GJ90) 2017/04/10(月)23:59 ID:srG0I8DXr(2/2) AAS
とりあえずC++のリンケージ仕様でも投下しとくか
外部リンク:www.open-std.org
ここのN4660(C++17 DIS)の6.5節の段落3〜4あたりだな
123: (ワッチョイ 138f-+TA9) 2017/04/11(火)15:06 ID:xAQ0kPvC0(1) AAS
パスいるやん
124: (オッペケ Sr57-GJ90) 2017/04/11(火)17:53 ID:gmpvjUS3r(1) AAS
まじか
じゃあ同じ内容のN4659で
125
(1): ◆QZaw55cn4c (ワッチョイ beff-rt0y) 2017/04/12(水)19:45 ID:r8mKYRyu0(1) AAS
>>122
いや,だからC++の話だったら仮定義はない,って >>99 で書いたつもりだが,
C++ のリンクを貼ってなにを言おうとしているの?
126: (オッペケ Sr57-GJ90) 2017/04/12(水)22:52 ID:hzellBg9r(1) AAS
>>125
Cの仕様が示されたのだから次はC++での仕様が示されないと>106が可哀想ではないか
スレ違いの仮定義ではなくexternの意味・リンケージとの関係が本題だったと記憶
127: (ワッチョイ db57-EaKP) 2017/04/13(木)12:41 ID:NIQ3hjXd0(1) AAS
んだね
128: (ワッチョイ eb00-AM0K) 2017/04/13(木)17:14 ID:IqLxmvNO0(1) AAS
moduleが標準入りするのはいつごろよ?ついでにD言語のversionとaliasもパクって完全体になってほしいね
129
(1): (ワッチョイ eb7a-3MbB) 2017/04/13(木)18:41 ID:RdwWAERL0(1) AAS
それよりネットワーク関連を標準化しろ
この際asioでも許容
130
(1): (ワッチョイ 3b32-Lcy7) 2017/04/13(木)21:28 ID:n9EAyVre0(1) AAS
asioとhttp系の何かつけてくれ
131: (ワッチョイ eb86-HE/W) 2017/04/15(土)11:47 ID:BNJEkz/Q0(1) AAS
>>129-130
ネットワークライブラリを作っております
遊んでみてください、宣伝失礼しました。
外部リンク:github.com
132: (ササクッテロル Sp6f-cQmk) 2017/04/15(土)11:52 ID:0ry10bQQp(1) AAS
標準で入ってることが重要なんじゃないかなあ…
133: (ワッチョイ 1f6b-HE/W) 2017/04/15(土)11:56 ID:JwQS3cI30(1) AAS
炊飯器用の小さいネットワークライブラリも必要になるんじゃねえの
134: (ワッチョイ 0f1f-V7Gz) 2017/04/15(土)12:21 ID:QXvRHshA0(1) AAS
漁師さん用も頼む
135: (ワッチョイ eb7a-3MbB) 2017/04/15(土)14:16 ID:/RNhb41k0(1/2) AAS
外部ライブラリっていうだけでハードル高くなるからな
仕事で使いづらいのはもちろんとしてOSSでも使用者に各ライブラリを掻き集めてもらわないといけなくなるから最小限にしたい
136: (ワッチョイ 1fb2-EaKP) 2017/04/15(土)21:37 ID:53BEnEdf0(1) AAS
論理積で空集合になったからといって
じゃあ論理和にしろと? 頭悪すぎだろ
137
(1): (ワッチョイ eb59-0/8P) 2017/04/15(土)22:25 ID:D67U9VSC0(1) AAS
静的型付け言語でオブジェクト指向すると
基底クラスにメソッドが集まっていく…
138: (ワッチョイ efa6-HE/W) 2017/04/15(土)22:33 ID:uwyLFIA10(1) AAS
それはよくない兆候だよね
139: (ワッチョイ eb7a-3MbB) 2017/04/15(土)23:01 ID:/RNhb41k0(2/2) AAS
何故テンプレートを使わないのか
140: (ワッチョイ eb59-0/8P) 2017/04/16(日)01:51 ID:M1nx5OGg0(1/2) AAS
基底クラスにメソッドが集まっていくのは仕方が無いにしても、
公開する相手別にインターフェースを分けて抽象クラスの多重継承でもしておけば
大きな混乱は避けられる
希ガス
141
(1): (ワッチョイ 0b75-7bPG) 2017/04/16(日)03:21 ID:9vBuyRLK0(1/2) AAS
仕方ないか?
そういう場合大抵は派生先のあのクラスとあのクラスでこれ使うから基底にいれとこうみたいになってis aじゃなくなってる気がする
142: (ワッチョイ 3b0d-T+tu) 2017/04/16(日)10:05 ID:P5/zt8YK0(1) AAS
俺も>>141に一票かな。
基底クラスに集まって来るような関数群は、共通に使うという一点に於いてのみ意味があることが多いんだよね。
と、すると、大抵別クラスとして分離可能になるってケースが多い気が。
つまり、実はhas-aが妥当で、それどころかUMLで言うところの依存関係だけで問題ない事が多いという。
143: (ワッチョイ bbf4-aC3X) 2017/04/16(日)13:02 ID:FhXvPItE0(1/2) AAS
dynamic_castは悪という間違った考え方が基底に余計なメンバ関数を実装させる原因
144: (ワッチョイ eb7a-3MbB) 2017/04/16(日)13:15 ID:cLuVKvb50(1) AAS
dynamic_castが悪いのではなくdynamic_cast使いまくるようなら設計に問題があるのではないかという話なのでは
145: (ワッチョイ 4b3c-yJ/5) 2017/04/16(日)14:09 ID:1LAAxzhm0(1) AAS
おっと、Javaを悪く言うのはそこまでだ
146: (オッペケ Sr6f-xkGs) 2017/04/16(日)14:12 ID:kL6yOSUfr(1/2) AAS
144がアスペなのは間違い無い
147: (ワッチョイ 0b75-7bPG) 2017/04/16(日)14:49 ID:9vBuyRLK0(2/2) AAS
144を理解出来ない146が…
148: (ワッチョイ eb59-0/8P) 2017/04/16(日)14:53 ID:M1nx5OGg0(2/2) AAS
知らね
ゼロから設計するならともかく、すでに出来上がった構造に仕様追加がなされた場合、
基底クラスにメソッドを追加する流れになりがち
かつdynamic_castはある意味オブジェクト指向的解決手段と言えるかもしれないが、
静的型付けという枠組み(>137)から逸脱する
149: (ワッチョイ 1fcc-35Q+) 2017/04/16(日)15:31 ID:Jwa8aGsr0(1) AAS
dynamic_cast と reinterpret_cast が本来の意味と逆だよな
150
(1): (ワッチョイ bbf4-aC3X) 2017/04/16(日)22:20 ID:FhXvPItE0(2/2) AAS
複数インターフェース継承してdynamic_castすればいいところを、基底で取り敢えず全インターフェース重ねてなにもしない実装を定義するみたいなことが多すぎる。
151: (オッペケ Sr6f-xkGs) 2017/04/16(日)22:47 ID:kL6yOSUfr(2/2) AAS
>dynamic_cast と reinterpret_cast が本来の意味と逆だよな

訳:ボクは言語障害です
152: (ワッチョイ 9f78-T+tu) 2017/04/17(月)02:47 ID:/ZxvtgP60(1) AAS
>>150
いや、それもなんかおかしいだろ。
1-
あと 850 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.063s