[過去ログ] C++相談室 part137 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
1(2): (ワッチョイ 12c3-4saf) 2018/08/27(月)16:02 ID:vY3QDx2y0(1/2) AAS
次スレを立てる時は本文の1行目に以下を追加して下さい。
!extend:on:vvvvv:1000:512
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。
前スレ
C++相談室 part137
省11
2: (ワッチョイ 8ac3-4saf) 2018/08/27(月)16:03 ID:vY3QDx2y0(2/2) AAS
すまんスレ番ミスった
3: (ワッチョイ 6698-PcWx) 2018/08/27(月)16:03 ID:H/K1FpSE0(1/2) AAS
謝って許されることじゃないね
4: (ワッチョイ ea34-5zXi) 2018/08/27(月)16:22 ID:oonIPXiN0(1/2) AAS
こういうヤツがプログラミングするとえらいことになる
5: (ワッチョイ 3aa1-WQAu) 2018/08/27(月)16:26 ID:7PWma/MO0(1) AAS
1 はクズ
6(1): (ワッチョイ bd93-zO5i) 2018/08/27(月)17:22 ID:TVAO+u4x0(1) AAS
フェイルセイフ機構として
スレッドを立てて何分間あるいはレス何個までは
立てた人に限りタイトルを修正できる、
みたいな機能があっても良いかも知れん。
あるいは事前に「これから立てるスレッドは〜の後継である」
みたいな宣言ができて、重複や番号の間違いをチェックしてくれるとか。
7: (ワッチョイ 6698-PcWx) 2018/08/27(月)17:25 ID:H/K1FpSE0(2/2) AAS
>>6
それいいな。しばらく放置して、正当スレと認められたら
時間ギリギリで>>1の内容を書き換えるのにちょうどいい
8: (アウアウカー Sad5-fKBf) 2018/08/27(月)18:21 ID:xvf87VjGa(1) AAS
結局どうするん?
ここ使用?
9(3): (ワッチョイ bd08-4dUf) 2018/08/27(月)22:39 ID:oahf+hzU0(1) AAS
vector<object*>* func()
{
vector<object*>* vect = new vector<object*>;
for(int i = 0; i < 10; ++i)
{
object* obj = new object;
vect->push_back(obj);
省8
10(1): (ワッチョイ 2561-+TX9) 2018/08/27(月)22:45 ID:X1STgCw40(1/3) AAS
どなたか c++でのソケット通信を使った複数人が使えるチャットのサンプルコード持ってる人いませんか?
ネットで色々調べてるんですけど、tcpじゃなくてUDPのやつだったりwindowsじゃなかったりcだったり書いてあることが難し過ぎたり...
そもそも1:1のコードばかりで複数人対応のサンプルコードが見つかりませんorz
11(3): (ワッチョイ 2561-+TX9) 2018/08/27(月)22:46 ID:X1STgCw40(2/3) AAS
複数人対応にするにあたって、複数のソケットを用意するのとselect関数が必要になると思うのですけど、selectの方はおそらく理解できています。
複数のソケットからアクセプトされるところの流れが全然分からないです。
今自分が書いてみたコードだとスタックオーバーフローというらしい現象が起こってしまってます。
12: (ワッチョイ b9f2-PcWx) 2018/08/27(月)22:47 ID:CIUWIYCt0(1) AAS
難しくないものは存在しないとオモ
13(1): (ワッチョイ ea34-5zXi) 2018/08/27(月)22:50 ID:oonIPXiN0(2/2) AAS
>>9
ループで回して解放しないとダメ
JAVA脳だと放置するところだけど
14(1): (ワッチョイ fdb3-PcWx) 2018/08/27(月)22:57 ID:AuFamtLr0(1) AAS
>>9
どっちもnewするなら両方deleteしないといけない(もちろんobjをループでdeleteするのが先
何が良い・良くないは自分で考えた方がいいよ
>>11
アクセプトされる、ってのは認識がおかしい
listenしたソケットに来た接続要求を、acceptで受け入れてクライアントとのセッションを開始する
サーバーはlistenで要求待ちするソケットと、acceptでクライアントと通信するソケットを持つ
省1
15: (ブーイモ MM8e-my2l) 2018/08/27(月)23:00 ID:CP0MczZVM(1) AAS
>>11
コードさらした方が話が早いよ
それより複数人だとどういうトポロジーで繋ぐの?
例えば4人だとどうなる?
16: ◆QZaw55cn4c (ワッチョイ 4a60-vl9i) 2018/08/27(月)23:09 ID:W4qvSHyH0(1) AAS
>>10-11
次の本が、似たような状況(たしかレーシングゲームだったか)のサンプルを載せていたと記憶しています
外部リンク:www.amazon.co.jp
Windows の winsock も UNIX のバークレーソケットと似たようなもので、若干の修正は必要ですが、そこはネットを参考にして書きなおせる範囲だと思います
この本は初版が 1992 年頃に出たときから htons()/ntohs() が書いていない、とボロカスだったんですが、私はとっても好きだったのです…
17: (ワッチョイ 2580-kiUO) 2018/08/27(月)23:16 ID:zX+eejgv0(1) AAS
listenで待ってるスレッド(もしくはプロセス、こっちならあとでfork()する)がいる
listenで待ってるスレッドやプロセスからacceptして
peerと新しいソケットで通信するスレッドを作る
もうコレで分かる
18(1): (ワッチョイ 6680-jqYf) 2018/08/27(月)23:32 ID:ba8BcfX30(1) AAS
>>9
ゲームエンジンの本には、よくメモリープールの実装が載っている。
こういう機能を抽象化した、モジュールを誰かが作っているはず
Effective とか、デザインパターンの本も読んだ方がよい
19(1): (ワッチョイ 2561-+TX9) 2018/08/27(月)23:32 ID:X1STgCw40(3/3) AAS
サーバーが自分用のソケット一つと複数個のユーザー用ソケットを作成し、ユーザー 一人につき一つのソケットが割り振られるイメージでした。
20(1): (アウアウオー Sa12-fKBf) 2018/08/27(月)23:52 ID:H8sSdLfla(1) AAS
こんな感じにpublicにもmainいてもエラーにならないのはどうしてですか?
Main.h
class CMain
{
public:
int main(int argc, char* argv[]);
};
省5
21(1): (ワッチョイ ea5e-7kIV) 2018/08/27(月)23:57 ID:TZo7knfc0(1) AAS
一般関数のmainとメンバ関数Cmain::main()は別物だろうよ。
22(1): (ワッチョイ 4af9-DXeA) 2018/08/28(火)00:05 ID:04IHxsB70(1) AAS
>>20
名前空間が違っていて区別がつくから同じ名前のものがあっても大丈夫。
23: (アウアウオー Sa12-fKBf) 2018/08/28(火)00:18 ID:wxxo3xcIa(1) AAS
>>21,22
なるほど、それもそうですね
24(1): (ワッチョイ bd08-4dUf) 2018/08/28(火)07:30 ID:r63k0nU70(1) AAS
>>13 >>14
ありがとうございました。やっぱ両方なんですね
>>18
メモリープール初めて知りましたがこんな方法あるんですね
あと上司がおよそ20年に渡って継ぎ足し継ぎ足ししてきたすぱg秘伝のコードなので今更構造変えられんのです……
25: (ワッチョイ bd04-4dUf) 2018/08/28(火)07:39 ID:oGnGbrSA0(1/3) AAS
スマポつかえよ!
26: (ワッチョイ 0a4c-OYOS) 2018/08/28(火)07:44 ID:BzDdgzNr0(1) AAS
上司のコードに文句言いつつデリートも知らん奴がなんか言っとる
27: (ワッチョイ bd04-4dUf) 2018/08/28(火)07:49 ID:oGnGbrSA0(2/3) AAS
勇んでデリートするようなコード書きたいか?
28: はちみつ餃子◆8X2XSCHEME (ワッチョイ 5e6f-PcWx) 2018/08/28(火)08:58 ID:vCTFJ2QC0(1) AAS
>>24
リファクタリングの機会を設けないと秘伝が負債になるのがこの業界
29: (ワッチョイ 6680-jqYf) 2018/08/28(火)08:59 ID:TEJeUOom0(1) AAS
auto pointer, smart pointer ?
30: (ワッチョイ bd04-4dUf) 2018/08/28(火)10:05 ID:oGnGbrSA0(3/3) AAS
rip.auto_ptr.
31: (ワッチョイ 2561-+TX9) 2018/08/28(火)15:32 ID:2BUW4hJo0(1/2) AAS
>>19
1:1のソケットを4つ用意すれば4人でチャットできますよね?送ったメッセージをサーバーサイドが受け取って他の3人のソケットに送るイメージです
32(1): (ワッチョイ fdb3-PcWx) 2018/08/28(火)15:45 ID:FmvTK/aC0(1/2) AAS
あー、それなら合ってるね
そのままのイメージで書いてみればいける
33: (ワッチョイ 2561-+TX9) 2018/08/28(火)19:28 ID:2BUW4hJo0(2/2) AAS
>>32
それぞれのソケットの中身で違うのはポートだけってことで大丈夫ですかね?
34: (ワッチョイ fdb3-PcWx) 2018/08/28(火)19:45 ID:FmvTK/aC0(2/2) AAS
まぁポートだけ、というかリスニングの処理だけ特殊とは言えるかも
35(1): (オッペケ Sr3d-sFL6) 2018/08/28(火)20:36 ID:jw/yHSMpr(1) AAS
このスレって競プロerいる?
36: (ワッチョイ de1b-9hnH) 2018/08/28(火)23:15 ID:q8rsvszA0(1) AAS
>>35
いる
37(1): (ワッチョイ d9bd-BYDb) 2018/08/29(水)00:22 ID:9tKCPoRq0(1) AAS
関数からreturnされる値は必ず自動的にmoveされる?
38: (ワッチョイ 66eb-vl9i) 2018/08/29(水)00:25 ID:uf5REJu50(1) AAS
コンパイラと設定によると思う
39: (ワッチョイ 2580-kiUO) 2018/08/29(水)00:26 ID:zRPnCBM00(1) AAS
計算機S 192.168.0.1:40000 ⇔ 計算機A 192.168.0.16:41769
計算機S 192.168.0.1:40000 ⇔ 計算機B 192.168.0.17:61544
計算機S 192.168.0.1:40000 ⇔ 計算機C 192.168.0.18:61568
計算機S 192.168.0.1:40000 ⇔ 計算機D 192.168.0.19:63490
↑ ↑最初に接続する計算機のポートは通常自動的に空き番が使われるようにする
計算機Sからみてpeerは
計算機Sが受付を待っているポートに
省1
40: (ワッチョイ fdb3-PcWx) 2018/08/29(水)01:16 ID:nUvoSPGm0(1) AAS
え、TCPいうてたしサーバーのIPとポート指定して接続してつなぎっぱなしを想定してたんだけど違うのか
いちいち切って繋ぎ直すなら別だけど
41: (ワッチョイ 6681-PcWx) 2018/08/29(水)01:39 ID:+EFc44O50(1) AAS
受付嬢は一人、ご相談は各担当に回す
みたいな
42: はちみつ餃子◆8X2XSCHEME (ワッチョイ 5e6f-PcWx) 2018/08/29(水)01:56 ID:iljSGsda0(1/2) AAS
>>37
値が rvalue でムーブコンストラクタが存在するならばムーブされる。
(lvalue も状況によっては rvalue になることもある。)
ただし、 RVO の適用条件に叶う場合は RVO が適用されるかもしれないのでコピーもムーブもされないことは有りうる。
43(2): (ワッチョイ ea23-vl9i) 2018/08/29(水)13:02 ID:3zmBLDqv0(1) AAS
Hogeというクラスがあったとして、
Hoge getHoge();
という関数があるときに、
Hoge &hoge = getHoge();
と参照で受けて問題ない?
44(1): (ワッチョイ 8ac3-PcWx) 2018/08/29(水)13:31 ID:8DgsmGan0(1) AAS
ダメ
getHoge()の返却値はprvalueなので
constのない左辺値参照で受けることはできない
右辺値参照か、
constのついた左辺値参照が必要
45: はちみつ餃子◆8X2XSCHEME (ワッチョイ 5e6f-PcWx) 2018/08/29(水)15:21 ID:iljSGsda0(2/2) AAS
>>43
getHoge() の返却値は一時的なオブジェクトなので
原則としては完全式の終わりに解体されることに
なっているが、 >>44 の述べる通りの方法で参照で受けたときに限って
例外的に寿命が延長される規則がある。
参照のスコープの終わりがオブジェクトの寿命になる。
RVO が発動するだろうから、そもそも参照で受ける意味があんまり無いと思う。
46(2): (ワッチョイ 23d2-J7KC) 2018/08/30(木)00:25 ID:kCgj5iLA0(1) AAS
書籍スレで聞いたらスレチ(?)と言われたので質問させて下さい(m´・ω・`)m
C++で新し目(出来れば2016年以降に発売したもの)の入門書でオススメがあれば教えていただきたいのですが…
よろしくお願い致します。
47: (ワッチョイ 239f-HLp6) 2018/08/30(木)01:05 ID:RsXRD1vR0(1) AAS
ありません( ー`дー´)キリッ
48(1): (ワッチョイ 1dc3-Nr3p) 2018/08/30(木)02:11 ID:0LlXI/R20(1) AAS
Effective Modern C++は読んどいたほうがいいけど入門書じゃねえな
うーん
49(1): (ワッチョイ 05fb-PgRe) 2018/08/30(木)02:18 ID:VcrE/h+O0(1) AAS
>>43
全く問題ない。
規格にもしっかり書いてある。
50: (ワッチョイ e3c3-tpL7) 2018/08/30(木)05:39 ID:zs5ycFHj0(1/11) AAS
>>49
どこに?
51: (ワッチョイ db1b-eZ+R) 2018/08/30(木)07:30 ID:3T0jr2180(1) AAS
>>46
あるわけいだろ
C++は入門言語じゃない
52(1): (ワッチョイ e3c3-tpL7) 2018/08/30(木)07:40 ID:zs5ycFHj0(2/11) AAS
>>46
このへん
ISBN-10: 4797394633
日本人の著者では柴田氏の作風が俺的にはお奨め
入門だからって抜いちゃいかんことを押さえてる
ISBN-10: 4798119598
C++といえばこの人
省2
53: (ワッチョイ 7df2-tpL7) 2018/08/30(木)08:03 ID:ff0XXJ3a0(1) AAS
そもそも、何も知らない初心者がなんで「2016年以降」とか限定するんだ?
何か根拠があるわけでもないだろう。
54: (ワッチョイ 9593-kT/R) 2018/08/30(木)08:35 ID:GbaSH31o0(1/2) AAS
古い本だと古い規格で説明されてるから、初心者には良くないって点はあるね。
#include <cstdio.h> みたいな中途半端な古さは特にやっかい。
『プログラミング言語C++』第4版を読んどきゃええじゃろ、と思ったけど
初版が2015年3月だから「古い本」だな。
55: (ブーイモ MMab-U3HC) 2018/08/30(木)09:34 ID:CAfiYqURM(1) AAS
2016年に何かあったの?
56(1): (ワッチョイ e3c3-tpL7) 2018/08/30(木)10:11 ID:zs5ycFHj0(3/11) AAS
> #include <cstdio.h>
こんな時代あったか?
57: (ワッチョイ 2334-hqRA) 2018/08/30(木)10:17 ID:ABjDmLki0(1) AAS
ときどきCがわかってない日本人が入門書書いてたりして余計路頭に迷わせたりする
58(2): (オッペケ Srf1-Zer2) 2018/08/30(木)10:25 ID:Usgn3Z4yr(1) AAS
>>48
effective 「modern」 c++ って良いの?
ただの effective は良いってほぼ全員認めてるが、more とか modern はあまり勧められないしどうでも良い本なのかと思ってた
59(1): (オイコラミネオ MMeb-RPdS) 2018/08/30(木)10:56 ID:6+1XpMNpM(1) AAS
math.hとcmathってどっちがいいの?
そもそもcmathインクルードしてもM_PI使えんしよく分からない
60: (ラクッペ MMd1-eZ+R) 2018/08/30(木)10:58 ID:OpvYfh8NM(1/2) AAS
>>58
effectiveならいいっていう老害なんだろ
61(1): (ラクッペ MMd1-eZ+R) 2018/08/30(木)11:01 ID:OpvYfh8NM(2/2) AAS
>>52
柴田の本は辞めとけ
初心者には無理
あれは大学の講義でかわされるやつ
62: (ワッチョイ e3c3-tpL7) 2018/08/30(木)11:49 ID:zs5ycFHj0(4/11) AAS
>>61
初心者つーかオマエだろ?
大学の授業についていけない二回転5
難癖ばっかりつけてないで
幼児用のC++の本を出してみな
63(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ db6f-tpL7) 2018/08/30(木)12:34 ID:8c0RjkhV0(1/3) AAS
>>59
cmath を使うべき。
C のヘッダは互換性のために残されているだけで、積極的に使うようなものではない。
M_PI は C の規格にも C++ の規格にもないマイクロソフト独自の拡張だから、
マイクロソフトがどういう気持ちで用意しているのかは知らないけど、
_USE_MATH_DEFINES マクロを #define しておけば Visual Studio では有効になるらしいぞ。
外部リンク[aspx]:msdn.microsoft.com
64: (ワッチョイ e3c3-tpL7) 2018/08/30(木)12:46 ID:zs5ycFHj0(5/11) AAS
C++17でcmathが大幅強化されたね
ISO/IEC29124の特殊関数を取り入れた
65: (スップ Sd43-ePit) 2018/08/30(木)12:52 ID:5ZKhK1u9d(1) AAS
>>58
modernはC++11以降を使うなら必読だぞ
むしろ素effectiveやmoreの方が古くてあんまり役に立たなくなってる
66: (ワッチョイ 2312-rkYf) 2018/08/30(木)13:14 ID:ypFQk8hw0(1) AAS
>>63
gccの独自拡張じゃねえの
むしろMSはそれに合わせてる
長いものには巻かれろ、ってヤツだ
長い方はMSじゃなくgcc
67: (ブーイモ MMab-zBrR) 2018/08/30(木)13:37 ID:ZM/Yh9noM(1/2) AAS
柴田の本は昔から悪書扱いされてる
あえて読むことはないと思うわ
68: (ワッチョイ e3c3-tpL7) 2018/08/30(木)13:37 ID:zs5ycFHj0(6/11) AAS
だから読んでないわけか
69: (ブーイモ MMab-zBrR) 2018/08/30(木)13:58 ID:ZM/Yh9noM(2/2) AAS
昔は読んでたよ
20年以上前かな
いまでもjavaやc++のやつは図書館でたまにペラペラしてみるけど
読みづらくて全然合わないと感じる
同じジャンルで山田祥寛の本があったらそっちを読む
70: (ワッチョイ e3c3-tpL7) 2018/08/30(木)14:09 ID:zs5ycFHj0(7/11) AAS
つまり読んでないってことだろ
図書館でペラペラってなぜそんなことをするんだ
C++を20年以上やってるんだろ
71: (ワッチョイ cdd2-tpL7) 2018/08/30(木)14:38 ID:A7u5khVs0(1) AAS
人にC++言語について教える時に、人口に膾炙した書籍の表現を使うのが無難だからでしょ。
72(1): 54 (ワッチョイ 9593-kT/R) 2018/08/30(木)15:34 ID:GbaSH31o0(2/2) AAS
>>56 すまん <cstdio.h> は変ね。<stdio.h> と <cstdio> が混ざってしまった。
<cstdio.h> というヘッダが存在する処理系もあるか知れんけど、
#include で使えと教えてる本はないだろうな。
主旨は「半端に古い本だと」で変わらないけど、良い例が出せんわ。
73: (ワッチョイ e3c3-tpL7) 2018/08/30(木)15:49 ID:zs5ycFHj0(8/11) AAS
>>72
それを言うなら
<stream.h> //cfront 1.0
<iostream.h> //ARM
<iostream> //C++98
じゃね?
74(1): (ワッチョイ 037e-tpL7) 2018/08/30(木)16:04 ID:pLYrs11p0(1/2) AAS
質問なんだがコンパイル時間の観点から見て、ヘッダをインクルードするときは必要でない限りcppファイルでincludeするべき?
75: (ワッチョイ e3c3-tpL7) 2018/08/30(木)16:13 ID:zs5ycFHj0(9/11) AAS
#includeのネストを避けろということか?
そう主張する連中もいるが、俺は反対
76: はちみつ餃子◆8X2XSCHEME (ワッチョイ db6f-tpL7) 2018/08/30(木)16:18 ID:8c0RjkhV0(2/3) AAS
>>74
ちょっと質問の意図がよくわかんないんだけど、逆に言えば
「ヘッダファイル (*.h) が他のヘッダファイルを include するのはコンパイル時間を増大させるか?」という意味?
あんまり関係ないよ。
よっぽど大きいプロジェクト (gcc とか) ならちょっとしたことで結構な差が出ることは無いとは言えないけど、
それでもプリコンパイルヘッダとかを活用すればだいぶん時間は短縮できるし、
更に高速化したいならキャッシュサーバを使うコンパイラもある。
省3
77: (ワッチョイ e3c3-tpL7) 2018/08/30(木)16:23 ID:zs5ycFHj0(10/11) AAS
コンパイラは可能な限り高性能なマシンで使うべし
78(2): (ワッチョイ 037e-tpL7) 2018/08/30(木)16:52 ID:pLYrs11p0(2/2) AAS
例えばstd::stringをhoge.hでは使わずhoge.cppのみで使われている場合
hoge.hで#include<string>と書くと、他のファイルからhoge.hをincludeしたとき無駄が出るはず
だからhoge.cppで#include<string>と書いた方がいいのが、それとも些細な差なので全部hoge.hにぶち込んでもいいのかということ
79: (ワッチョイ e3c3-tpL7) 2018/08/30(木)16:55 ID:zs5ycFHj0(11/11) AAS
なるほど、実装で使うだけで宣言にはいらないものか
だったらhoge.cppで#includeしたほうがいいね
80(2): (ワッチョイ fd61-XEe6) 2018/08/30(木)17:19 ID:X06N8JK80(1) AAS
外部リンク[php]:www.geekpage.jp
なんかソケットごとに違うポートを割り振るものだと思ってたのですが、
listen(srcSocket, 1);//第二引数はクライアント上限数
この第2因数をいじったら同じポートでも普通に接続できました。
このまま気にせずselect処理書いていっても大丈夫ですかね...?
通信関係あまり知らないのでバグったりするとどうなるか分からずちょっと怖いです。
相手用のソケットは
省1
81: はちみつ餃子◆8X2XSCHEME (ワッチョイ db6f-tpL7) 2018/08/30(木)17:49 ID:8c0RjkhV0(3/3) AAS
>>78
その場合だと .cpp に書いた方が当然良い。
上下前次1-新書関写板覧索設栞歴
あと 921 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.025s