[過去ログ] 【初心者歓迎】C/C++室 Ver.100【環境依存OK】 [無断転載禁止]©2ch.net (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
503(1): 2017/02/24(金)23:03 ID:TLhS+9k8(1) AAS
はよ10年前のソース出せよ
504(1): 2017/02/24(金)23:06 ID:nwaeFCKh(2/2) AAS
画像リンク[jpg]:i.imgur.com
505: 2017/02/25(土)07:21 ID:98TUEskp(1) AAS
なんで2分ちょいで出てくるかね。
506: 2017/02/25(土)08:14 ID:QoR/O5Qa(1) AAS
自演
507: 504 2017/02/25(土)08:21 ID:Jm21gNIW(1) AAS
>>503 ≠ >>504 だ。すまんなw
508: 2017/02/26(日)18:42 ID:stmjd5mD(1) AAS
味噌県のクセにコーミソース以外のソースを使う非国民は去れ
509: 2017/03/06(月)07:57 ID:NqblWJNK(1/2) AAS
#define ChannelBlend_SoftLight(A,B) ((uint8)((B < 128)?(2*((A>>1)+64))*((float)B/255):(255-(2*(255-((A>>1)+64))*(float)(255-B)/255))))
このマクロの
(2*((A>>1)+64))
この部分なんですが
なんで(A+128)じゃないんですかね?
510: 2017/03/06(月)08:21 ID:1XvIZqGa(1) AAS
最初の人がコピペで作ったんでしょ。+128に定義し直してるのもあるよ
511: 2017/03/06(月)08:30 ID:cJfBjMIV(1) AAS
Aが奇数のときの動作が違うね
512: 2017/03/06(月)10:33 ID:NqblWJNK(2/2) AAS
A、Bにはuint8を想定してますから、一瞬オーバーフローの関係かなとも思いましたが
そんなことはなく、特に深い意味はなさそうですね
ありがとうございます
513: 2017/03/13(月)00:19 ID:ZWBqluXH(1) AAS
仮想関数をオーバーライドするときはどう書くのがいい作法?
void vf()
virtual void vf()
virtual void vf() override
void vf() override
514: 2017/03/13(月)06:06 ID:IkDDkkqX(1) AAS
ハゲ先生によると最後の void vf() override が良いみたい。
『プログラミング言語C++ 第4版』p.592
加えてoverride指定の不整合をチェックするコンパイラオプションだね。
GCCのVersion 5から使える -Wsuggest-override とか。
他のコンパイラについては知らん。
515: 2017/03/13(月)10:43 ID:Kr7xjXLG(1) AAS
デストラクターに付けてる人はあんま見たこと無いな
class Derived : Base {
public:
~Derived() override {}
};
516: 片山博文MZ ◆T6xkBnTXz7B0 2017/03/13(月)20:30 ID:VNPYsRzK(1/2) AAS
Bcc55でtypeofを実現するのは不可能なのかな?
517: 片山博文MZ ◆T6xkBnTXz7B0 2017/03/13(月)20:57 ID:VNPYsRzK(2/2) AAS
古いコンパイラを使ってる人居る?
コンパイラの名前教えて下さい。
518: 2017/03/14(火)23:30 ID:wzywZVIy(1) AAS
老人がカセットテープデッキ求めたり
熟女モノのエロ本()を求めるような感じ?
519: 2017/03/15(水)01:04 ID:R2Ueow1p(1) AAS
古いコンパイラと自覚しつつも使ってるような人はこのスレには来ないだろ
時代遅れの遺物の話じゃ通じないし
520: 2017/03/17(金)11:46 ID:pwo5j4El(1) AAS
何でA、Bを()しないんだ?
521: 2017/03/25(土)21:37 ID:IRaGixDk(1) AAS
いまだに関数マクロ使ってるようでは
()したところで五十歩百歩
522: 2017/03/25(土)22:37 ID:9zWIhzFx(1) AAS
>>460
>>465
宣言とかいろいろ確認してやっぱソースはおかしくないよねってことで
サポートに調べてもらったら理由はわからないけど正しく動作する修正方法がわかったって連絡があって
最終的には詳細は書けないけどコンパイラのバグだった
523: 2017/03/26(日)08:58 ID:4rESVRzB(1) AAS
ここはお前の日記を垂れる場所じゃない
「サポートによるとコンパイラのバグだった」で済むのに
アレやってコレやってを書くな低能
524: 2017/03/27(月)10:03 ID:wSWIgauQ(1) AAS
事後報告あると参考になっていいんだけどな
今回は本人以外に状況がわからないから事後報告されてもw
525(2): 2017/03/30(木)03:06 ID:6sTQLdA2(1) AAS
外部リンク:codepad.org
ポインタをメンバに持たせた場合のget/setの書き方が分かりません
getの方は、ポインタを返すときに返した先で値を変えられないようにconstを付けたのですが、
sizePlus10のような関数を呼びたい場合に、const_castを付けて呼ぶことになってしまいました
値の変更をするのでsetを通してやるのが良いと思うのですが、何か良い書き方ありますか?
また、setの方は、一括で設定させることはできるのですが、
data->id、data->sizeの値を個別に設定したい場合、何か良い書き方はありますか?
コメントの部分のようにsetメンバ関数を何個も書く方法しか思いつきません
526(1): 2017/03/30(木)07:50 ID:GtG5BmiK(1) AAS
getDataの結果を修正したいのだから
杓子定規にgetDataの戻りにconst付けるのを止めればいいのではないか
そう言えばC++17(ドラフト)もstring::dataの戻りが非constに修正されたような
527(1): 2017/03/30(木)08:08 ID:KJlpKUaR(1) AAS
memcpy w
528(2): 2017/03/30(木)10:48 ID:JHpE2Dpf(1) AAS
>>525
一般論として形でただ覚えるのではなくて意味を理解しよう
理解があやしいから設計の一貫性がなく混乱してるようにみえる
・Dataをポインタで所有するのはなぜ
・ゲッター/セッターを使ってアクセスするのはなぜ
・ゲッターで返す値にconstをつけるのはなぜ
・sizePlus10がData*を受けとるのはなぜ
MyClassの設計方針にあわせるならsizePlus10をDataではなくMyClassを受けとるようにして
void sizePlus10(MyClass & mc)
{
省12
529(4): 2017/03/30(木)20:11 ID:irpIFLVN(1) AAS
>>528
おまえは質問の意図を理解しよう
>>525
そのsetgetでいいんじゃない?ただそのgetは俺だったらreferにするな
ついでにsetget両方使えるようにdata* operator->()みたいなの実装かな。というかむしろそっちでアクセスする方向にするな
あとはattachdetach作っておいてm_dataを置換できるにようにしちゃうな
その手のスマートポインタは至るとこで使われてるからこんなとこで聞かずにどっかのライブラリの参考にしたら?
メンバのコピーはpragma pack1でstructしておいてmemcpy
530: 2017/03/30(木)23:27 ID:O3+3nsIM(1) AAS
>>529
>メンバのコピーはpragma pack1でstructしておいてmemcpy
それをすると何がいいことあるのか?
531(1): 2017/03/30(木)23:45 ID:s+CP+YQd(1) AAS
こういえクソみたいな方法を自慢気に語り出す奴が居るところかC++の最もクソな所だよね
532(1): 片山博文MZ ◆T6xkBnTXz7B0 2017/03/30(木)23:51 ID:2hi+y029(1) AAS
デフォルトコピーコンストラクターとか構造体代入とか知らないんだろう。
533: 2017/03/31(金)00:14 ID:5j4NF4+Z(1) AAS
>>532
>構造体代入とか知らないんだろう
ほうほう、それは何ですか?
534: 2017/03/31(金)01:59 ID:OFYzpq31(1) AAS
やべえなおい糞コードの臭いがプンプンしやがるぜ
535: 2017/03/31(金)02:09 ID:DQgqVTGo(1) AAS
>>526-529
ありがとうございます
今まではとりあえずget/setを書いてgetにはconstを付けとけば良いみたいな認識でしたが、
想定されるクラスの使われ方に合わせて適宜変更するべきでした
MyClassのようなget/setの分け方をすると、
sizePlus10のような関数やsetで不便になってしまうので、
constを付けないget/set共用のものにしてそれを通してアクセスさせるのが適切でした
( getData()でアクセスする場合、Data * const getData() const { /**/ } みたいな )
とても参考になりました
536(1): 2017/03/31(金)11:52 ID:xItn/dk+(1) AAS
>>531
くそじゃない方法をおしえて
537: 2017/03/31(金)12:09 ID:c13jjk6+(1) AAS
C#じゃないからないでしょ
538: 2017/03/31(金)13:26 ID:CbPadW0u(1) AAS
>>536
コピーは=使え
というだけの話
539: 2017/03/31(金)13:38 ID:2wgHKgmk(1) AAS
>>529
> メンバのコピーはpragma pack1でstructしておいてmemcpy
これ俺も理由知りたい
540(1): 片山博文MZ ◆T6xkBnTXz7B0 2017/03/31(金)17:24 ID:tvggMnLQ(1/6) AAS
typedef struct MY_STRUCT
{
int ch;
} MY_STRUCT;
MY_STRUCT a,b;
a.ch = 0;
b = a; //代入できる
541: 2017/03/31(金)19:17 ID:Xv9Etv1i(1) AAS
>>529
> おまえは質問の意図を理解しよう
なんか無駄に上から目線だなぁ
って思ったら
> メンバのコピーはpragma pack1でstructしておいてmemcpy
単なる老害だったでござる
542: 片山博文MZ ◆T6xkBnTXz7B0 2017/03/31(金)19:19 ID:tvggMnLQ(2/6) AAS
構造体の代入ができなかったのは大昔のことだ。
543(2): ◆QZaw55cn4c 2017/03/31(金)19:35 ID:BClOXWeK(1) AAS
>>540
それ,K&R1 から堕落したよね
544: 片山博文MZ ◆T6xkBnTXz7B0 2017/03/31(金)19:40 ID:tvggMnLQ(3/6) AAS
構造体定義を#include <pshpack1.h>と#include <poppack.h>で囲むのは、スピードよりもメモリー効率を優先するときにする。
545: 片山博文MZ ◆T6xkBnTXz7B0 2017/03/31(金)19:44 ID:tvggMnLQ(4/6) AAS
あるいは構造体のレイアウトを分かりやすくするときにパッキングを指定する。
546(1): 片山博文MZ ◆T6xkBnTXz7B0 2017/03/31(金)19:46 ID:tvggMnLQ(5/6) AAS
>>543
堕落ではない。進歩だ。
547: 2017/03/31(金)19:49 ID:RKtYGe+y(1) AAS
> スピードよりもメモリー効率を優先するときにする
20年くらい前まではそういう老人もいたね
今はメモリレイアウトを固定したい時にしか使わないけど
548: 片山博文MZ ◆T6xkBnTXz7B0 2017/03/31(金)19:58 ID:tvggMnLQ(6/6) AAS
#pragma 直接指定は礼儀が悪い、昔のやり方だ。
549: 2017/04/01(土)02:25 ID:m99QLuku(1) AAS
メモリ効率だけの問題なら大抵の場合は順番入れ替えるだけで問題ないしな
550(2): ◆QZaw55cn4c 2017/04/01(土)07:47 ID:1ZzXEpHO(1/2) AAS
>>546
サイズが無限にのびるかもしれないものをコピーするなんてだめだよ
昔はね,構造体はポインタを介してしかつかえなかったんだよ
551(1): 2017/04/01(土)08:31 ID:AOt54aKT(1) AAS
そうそう
スタックに自動変数とかも言語道断
全部staticじゃなきゃね
552(1): ◆QZaw55cn4c 2017/04/01(土)13:26 ID:1ZzXEpHO(2/2) AAS
>>551
スタックに自動変数はあたりまえだよ‥static おじさん,じゃないつもりなんだが‥
構造体はポインタで扱うべきもので,実体をコピーするのはなるたけ避けたいね
C++ では void f(const C &arg) って,可能ならば const と参照の縛りをできるだけいれるよね,余計なコンストラクタを走らせないために
K&R1 は教育的な配慮に優れた実装だと思うんだ‥
553(2): 2017/04/02(日)14:13 ID:SQNmFUeK(1) AAS
SOCKADDRが一言
554: ◆QZaw55cn4c 2017/04/02(日)17:06 ID:XkKG9LQx(1/2) AAS
>>553
手元のソースをみると
clientSocket = accept(serverSocket, (LPSOCKADDR)&clientSockAddr, &addrLen);
とか
if (connect(destSocket, (LPSOCKADDR)&destSockAddr, sizeof(destSockAddr)) == SOCKET_ERROR) {
とか,構造体のポインタを渡しているね
由緒正しき Berkeley socket では,構造体をコピーするなんて教育的ではない書き方は許していないよ
555: 2017/04/02(日)17:31 ID:QFdfGGyb(1/2) AAS
つまり>>553はK&Rおじさんにも劣る存在
556: 2017/04/02(日)18:21 ID:XkKG9LQx(2/2) AAS
K&R1 おじさん,と
K&R2 おじさん
は区別したまえ,若造
557(1): 2017/04/02(日)19:26 ID:QFdfGGyb(2/2) AAS
どっちも時代遅れの老人でしょ
K&Rなんて昔存在したという噂でしか知らない
万葉集とか古事記みたいなもの?
558: 2017/04/02(日)20:22 ID:II71H9Zi(1) AAS
func1(a, b)
int a;
long b;
{
}
559(1): 2017/04/02(日)22:22 ID:JMz4l+Qd(1) AAS
> &destSockAddr,
> sizeof(destSockAddr)
由緒正しきBerkeley Socketも昔はこういう書き方したな
コイツは進歩が20年前で止まってるのか
今この書き方する奴は死刑でいい
560(1): 2017/04/02(日)23:11 ID:zmcqSa2a(1) AAS
便乗で申し訳ないが、値渡し、参照渡し、ポインタ渡し、の話で
ポインタ渡しといっても、C++の場合はナマポは嫌われて、スマポを使いましょう
ってことになっていると思うんだけど、これはどう渡すのが普通?
スマポを値渡しするのか、参照渡しするのか
はたまたスマポを剥いで、ナマポで渡すのか
個人的に統一しきれないっつーか
所有権やら生存期間やらリソース管理やらが関係してくるなら
スマポで渡すI/Fじゃないとまずいだろうし
逆にそういうのが関係ないなら、スタック上の自動変数を渡したいとかも考えると
ナマポで渡すI/Fのほうが都合が良かったり、どーなんだろ
省3
561: 2017/04/02(日)23:13 ID:6tq4Ne3Z(1) AAS
参照一択
562: 2017/04/02(日)23:24 ID:xNqaI0VS(1) AAS
>スマポを値渡しするのか、参照渡しするのか
>はたまたスマポを剥いで、ナマポで渡すのか
スマポの値渡しと生保は使い分けが必要だが、スマポの参照渡しだけはアホの所業。
とスコットメイヤーが言っていたような
563: 2017/04/02(日)23:43 ID:yhAnz0vw(1) AAS
>>560
shared_ptrはその名の通り所有権を共有する場合のみ使うもの
で、そういう場合は値渡しでもいいよ。中でmoveすれば
所有権を共有しないなら、nullptrを許容するならナマポそうじゃないなら参照
あんまり無いけど所有権を渡した先に移動させるならunique_ptr
564: 2017/04/02(日)23:58 ID:TsXu0WT4(1) AAS
所有権渡したくないならunique_ptrで持っている呼び出し元がgetでナマポを渡すかdereferenceして参照渡すかだな
565: 2017/04/03(月)00:00 ID:Jbp2gIKE(1) AAS
ナマポで渡してもshared_ptrを再取得する方法はあるだろ
まあ前提がいるが
566: 2017/04/03(月)00:34 ID:qQvnlfYK(1) AAS
うむむ、なるほど
ポインタらしき物にこれだけ多くの種類があってI/Fで縛ってしまうのは
一見面倒そうで、最近の流行というか静的型言語的には
型安全と見るべきなんだろうかしら
安易なGC言語より良いかもしれん、単純に情報量は多い
また一つC++が好きになった
うっかり循環参照したら怖いとか
コンパイラのバージョン違いでSTLやmallocの実装に
差異が有ることを前提に組まなきゃならないとか、玉にキズもあるけれど
567: ◆QZaw55cn4c 2017/04/03(月)06:55 ID:VwtRd/3a(1/3) AAS
>>559
C/C++ で生書きするなら今もおなじだよ
568: 2017/04/03(月)07:40 ID:dyU+EMvQ(1) AAS
型に対してじゃないのに括弧つけるの?
569: 2017/04/03(月)08:48 ID:WaUkCV9r(1) AAS
そこはインデントや{}の位置が人によって違ったりするアレだろ
570(1): ◆QZaw55cn4c 2017/04/03(月)19:32 ID:VwtRd/3a(2/3) AAS
>>557
K&R2 は C89 準拠だよ‥C89 が時代遅れだというけれども,いろんなことは C89 のときからやってきていて,C99 で追認された,というだけだよ
571(2): 2017/04/03(月)20:29 ID:5hra1L5C(1) AAS
>>570
あいわかった
お前は今後「K&R1おじさん」(略して「K&Rおじさん」)な
どうせ定数defineや関数マクロまみれなんでそ
572(1): ◆QZaw55cn4c 2017/04/03(月)21:53 ID:VwtRd/3a(3/3) AAS
>>571
略しないほうがいいよ‥
K&R2 おじさん=C89 はまっとうなCer, K&R1 おじさんは時代遅れ,この二つは全然違うよ
573: 571 2017/04/03(月)22:02 ID:ldINtwle(1) AAS
>>572
つまりお主(K&R1おじさん)は
K&R2おじさんが自分と一緒くたにされることを
申し訳ないと感じてるのだな!?
(>543)
> それ,K&R1 から堕落したよね
(>550)
> サイズが無限にのびるかもしれないものをコピーするなんてだめだよ
(>552)
> K&R1 は教育的な配慮に優れた実装だと思うんだ‥
574: 2017/04/03(月)22:14 ID:Vb9tETQW(1) AAS
voidを返す関数には感心したな
生成されるコードは大して変わらないかも知れんけど
575(1): 2017/04/04(火)01:00 ID:jC2xfRDP(1) AAS
関数プロトタイプを除けば、K&R1で十分かもしれないな
voidを返す関数? int でいいんだよ
576: 2017/04/04(火)15:11 ID:AeH3x9f/(1) AAS
戻り値をどうするかはcallerの勝手だからな
577: ◆QZaw55cn4c 2017/04/04(火)19:47 ID:xNF4clmU(1) AAS
>>575
確かに関数プロトタイプは有用だね,これがないと結構ミスるかもしれないね
void を返す関数?int でいいんだよ
578: 2017/04/04(火)20:27 ID:/PIYb7TP(1) AAS
int funca01(...);
int funca02(...);
int funca03(...);
579(2): 2017/04/04(火)23:08 ID:YUY8Mb54(1) AAS
老人は意味とか概念を理解しようとしないから嫌
「bool? intでいいだろ」
「forループ?本質はgotoと同じ」
「enumなんてintでいいだろ」
ホントもう存在が害悪
580(2): 2017/04/05(水)00:33 ID:DVg/5L4N(1/2) AAS
>>550
何が「昔はね」だよw
Qちゃんその当事Cなんて触ってなかったろ?
アンタ最近(たかだか数年?)プログラミングで遊び出しただけの人でしょ
581: 2017/04/05(水)02:38 ID:ZJf7oEgw(1) AAS
>>579
「static const intなんてenumでいいだろ」
こうですね
582: 2017/04/05(水)04:30 ID:ni2ET+sb(1) AAS
奴らは#defineだ
583: 2017/04/05(水)08:14 ID:Bh5NPBNH(1) AAS
マジックナンバー直書きでしょ
584(1): 2017/04/05(水)08:19 ID:qVk1sCwA(1) AAS
K&Rだと〜
c89だと〜
過去の異物がまだ現役だと信じて話してけるのがうざい
585(2): 2017/04/05(水)09:06 ID:ncDYJBnp(1/2) AAS
それ言うならC自体が。
いまさらC++と互換性のないCを選ぶ理由がない。
586: 2017/04/05(水)10:35 ID:k0RY104y(1) AAS
>>585
C++と互換性のないCってどんなの?
587: 2017/04/05(水)19:40 ID:IM5122PI(1) AAS
ベターC的な所全般だな
範囲forとか2進リテラルとかスレッドライブラリとか参照とか
Cにはnullptrすら無いし細かいところでは条件演算子が右辺値とか
ようするに別言語
オーバーロードに対するtgmathとかもう糞の臭いしかしない
588: ◆QZaw55cn4c 2017/04/05(水)19:44 ID:bDXscs5n(1/5) AAS
>>585
たしかに,C99 の数々の改悪は C++ との互換性を考慮していない悪手の連発,ほとほと困ってしまう
>>584
C++ とほどほどの交換性のある C89 が最良だよ
589: ◆QZaw55cn4c 2017/04/05(水)19:46 ID:bDXscs5n(2/5) AAS
>>580
「K&R1 は構造体は基本的にポインタでしか扱えない」制限なんて,使ってもいなかったらわからないだろう?
590(1): 580 2017/04/05(水)20:02 ID:DVg/5L4N(2/2) AAS
え?Qちゃんてサンデープログラマじゃないの?
職業プログラマでもないし
プログラミング暦せいぜい10年未満だと思ってた
591: ◆QZaw55cn4c 2017/04/05(水)20:07 ID:bDXscs5n(3/5) AAS
>>579
>「forループ?本質はgotoと同じ」
そんなことはいわないとおもうよ,K&R1 の時代から for はあるしね
きがつくと for(;;) { } と break だけで書いてたりするのはあるかもね,while 使いにくいとか,do while なんかマクロの中でしかつかわない,とかさ
enum?
#define でいいとおもうよ‥
592: ◆QZaw55cn4c 2017/04/05(水)20:08 ID:bDXscs5n(4/5) AAS
>>590
サンデーだよ
でも長いサンデーなんだ‥
593: 2017/04/05(水)21:26 ID:Kw8eDt7v(1) AAS
ニートじゃ分からんことも多いのでは
594: ◆QZaw55cn4c 2017/04/05(水)22:05 ID:bDXscs5n(5/5) AAS
たしかにそのとおりだが,K&R2 = C89 こそ必要十分,ということはわかるよ
595(1): 2017/04/05(水)22:10 ID:mGFW5fgT(1/2) AAS
そういうこと言ってるとそのうち技術についていけなくなるよ
596: 2017/04/05(水)22:22 ID:ncDYJBnp(2/2) AAS
C99やC11って、新しい技術とかそういうんじゃないじゃん。
597: 2017/04/05(水)22:40 ID:mGFW5fgT(2/2) AAS
規格
598: 2017/04/06(木)10:47 ID:jz0x7tjm(1) AAS
企画ものは好きじゃないからな
599: 2017/04/06(木)16:35 ID:w+UX2Wix(1) AAS
ころころ変わるんだから最新もクソも無いわけだが
pakomamaはガチらしいな
600: ◆QZaw55cn4c 2017/04/06(木)20:02 ID:Uar4T1Gl(1/2) AAS
>>595
別についていけなくてもいいよ,その殆どは自分には要らないものだから
それはそうと,これは!とおもう新しい技術って最近はどんなものがあるの?
601(1): 2017/04/06(木)20:16 ID:kFToYptL(1) AAS
まず、C#のasyncだのawaitだのはC++にも欲しいところ
というか、取り入れる方向で議論していたような
どのみちQZには使いこなせない機能だから知らなくてもよいけど
知れば発狂することだろう
602: ◆QZaw55cn4c 2017/04/06(木)20:21 ID:Uar4T1Gl(2/2) AAS
まずC#をやらないとね‥でも Java に走ってしまった‥Java に同じようなのはないの?
上下前次1-新書関写板覧索設栞歴
あと 400 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.616s*