X



C++相談室 part131 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん 転載ダメ©2ch.net (ワッチョイ 3b96-ov1m)
垢版 |
2017/07/29(土) 11:28:28.97ID:o30VDF4g0
次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512

C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。

前スレ
C++相談室 part130
http://mevius.2ch.net/test/read.cgi/tech/1490917669/

このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.100【環境依存OK】
http://echo.2ch.net/test/read.cgi/tech/1478440682/

■長いソースを貼るときはここへ。■
 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
0660デフォルトの名無しさん (ブーイモ MM26-7FiT)
垢版 |
2017/09/08(金) 21:05:50.39ID:VlEBq8a5M
>>648
モダンな言語の多くはprintfライクだし、javaも結局追加された。
printfライクのほうが効率的なことは経験的にわかってるのだからstreamにイマドキのformat関数を追加してくれればいいのに。
0669デフォルトの名無しさん (ワッチョイ 2309-g9be)
垢版 |
2017/09/09(土) 21:07:39.82ID:FtyOtgZ20
なんか、VCもGCCも半分くらいずつ間違えてる予感。
Setだけだとストレージがないからなんかバグの予感するし。
ストレージ持たせようとすると修飾が間違ってるって言われてる感じがする。
なんだこれ。
0674デフォルトの名無しさん (ワッチョイ 2309-g9be)
垢版 |
2017/09/10(日) 00:32:56.15ID:8Jhjgi9Q0
>>673
およ、折衷案できそうか?
自分はVC動けばいいんだけど、
コード公開するときに動かないと間抜けっぽいから良対応しようと一応やってる。
visualデバッガが便利すぎてVCやめるの大変。
0679デフォルトの名無しさん (ワッチョイ 2309-g9be)
垢版 |
2017/09/10(日) 07:35:26.76ID:8Jhjgi9Q0
折衷案色々あるなぁ、感心する。

>>676
別に個人のコードでどこかに迷惑かけてるわけじゃないし、この程度のコードも読めない方が問題。
それに高慢なお方は最初から相手にしてない。マウントしてほしくてやってるんじゃないんだよ。
0686デフォルトの名無しさん (ワッチョイ e311-xkdj)
垢版 |
2017/09/12(火) 09:35:13.31ID:M9yu8us30
何故そういうコードになっているかを理解せずに猿真似して意味があるかどうかはわからんけど
autoで受けるとおかしなことになるのは、キャストや代入で望む結果を得る方法(expression templateなど)全部そう
暗黙のキャストでなく関数呼び出しを強制すればautoでも大丈夫だけど
0687デフォルトの名無しさん (ワッチョイ 0e1c-HB/9)
垢版 |
2017/09/12(火) 10:11:33.04ID:CGKPtYms0
> 馬鹿に触らせるなテンプレートって昔から言うしな。

自分が触りたくないのはわかったから
0691はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5a15-xkdj)
垢版 |
2017/09/12(火) 22:54:11.94ID:cQiNwo4o0
>>688
あ、なるほど、状況を勘違いしてた。

C++17 からは RVO が使える場合は常に RVO で処理する (従来は「してもよい」というオプショナルな動作) ことと、
そのときはコピー (ムーブ) コンストラクタが無くても良いというルールが念頭にあったのだけれど、
この場合は RVO は関係なかった。 スマソ
0695デフォルトの名無しさん (ワッチョイ ab1c-/PGn)
垢版 |
2017/09/14(木) 22:59:53.42ID:AfykdPhZ0
いい流れだ
0696デフォルトの名無しさん (ワッチョイ c1a6-PzL5)
垢版 |
2017/09/15(金) 15:29:03.53ID:zUPCfesd0
"clacla.h"
class Clacla {
void func1();
void func2();
void func3();
};

"clacla.cpp" //実装部
クラスClacla くくり { <-ここ
void func1() { printf( "1" ); }
void func2() { printf( "2" ); }
void func3() { printf( "3" ); }
};
のように関数の実装時にClacla::を省略する方法ってあるでしょうか?
0697はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 1315-SGtB)
垢版 |
2017/09/15(金) 15:33:45.29ID:leF15WXE0
>>694
最適化が有効なら C++17 であろうがなかろうが clang なら RVO が効くはずだけど、 u.p の値は null になっちゃうな。
RVO がどうこうじゃなくて this の挙動に関するなんか変なルールが適用されてるとかかも?
0699696 (ワッチョイ c1a6-PzL5)
垢版 |
2017/09/15(金) 16:35:44.21ID:zUPCfesd0
>698
やっぱり無いですよね。
ありがとう。
0702デフォルトの名無しさん (ワッチョイ 59e4-HfMd)
垢版 |
2017/09/15(金) 21:27:27.94ID:5X/IRSU20
右辺値参照の暗黙適用は例外の処理で不都合があるよね
元の値をTmpにコピっといて例外発生で書き戻すにしても
関数A処理内で呼び出した関数Bからの例外をAのユーザコードでは完スルーなのに
コンパイラコードではコッソリ捕まえて書き戻す必要が有る
そんときロックでも掛かってたらどーすんのよと

呼び出し繋がりを横断的に管理要するとんでもないコスト増なんじゃね?
0703デフォルトの名無しさん (ワッチョイ 93c5-+NpA)
垢版 |
2017/09/15(金) 21:36:23.16ID:xDlOGQNS0
Tmpのアドレスを関数B(およびその先の関数)が知る可能性がコンパイラから見て排除できない限り
関数Aから関数Bを呼び出す前にTmpは元の値の完コピーにならざるおえないのでは…
(そうでなければ副作用のある関数を安全にコンパイルできない&安心して書けない

さらにロックに入るときと出るときは上と同じ理由で結果的に完コピーになる上に、
まともなOSならメモリバリアまで手当てしてくれるんじゃ…
0704デフォルトの名無しさん (ワッチョイ 93c5-+NpA)
垢版 |
2017/09/15(金) 21:42:30.18ID:xDlOGQNS0
つまり右辺値参照の暗黙適用が効力を持つのはスゲー広範にインライン展開されるような場合
(当然いかなるOSのAPIやシステムコール類の呼び出しも含まない
「だけ」
であって、通常のプログラマーにはあんまありがたみがはっきりしない仕様

※ 個人の感想です
0710デフォルトの名無しさん (スップ Sdf3-1/aj)
垢版 |
2017/09/18(月) 10:24:11.11ID:lVEmBRA9d
tcp/ipの勉強のためにC++で何か作れば勉強になるかな?って思ってるのだけど
こういうものを作れば勉強になるよってものある??
パケットの動きだったり階層の考え方だったりを学びたい
0711デフォルトの名無しさん (ドコグロ MM9d-BsvU)
垢版 |
2017/09/18(月) 10:40:29.87ID:U79GLBVsM
>>710
TCP/IPの勉強ならWireSharkの使い方覚えた方が早いかも
その上のプロトコルレベルなら勉強したいプロトコルの簡単なクライアントから始めればいいと思う
ちなみに俺はNetNewsに流れるむふふ画像を取り込みたかったのでnntpのクライアントをperlで組んで勉強した
0712デフォルトの名無しさん (スップ Sdf3-1/aj)
垢版 |
2017/09/18(月) 11:05:46.29ID:lVEmBRA9d
>>711
プロトコルレベルの勉強をしたい
そうなるとhttpサーバを立てることになるのかな?
そういう場合は簡単なhttpサーバとクライアントを作成すれば良いのかね?
それで通信しあってwiresharkで中身を見てtcpだったりhttpだったりを見るべき?
0713デフォルトの名無しさん (ワッチョイ 939f-0QkJ)
垢版 |
2017/09/18(月) 11:39:07.40ID:9mrqYCJU0
おれは一昔前、深夜ボリュームでかくする姉貴のPCが煩くてTCP通信でマスターボリューム弄るサーバー&クライアント作ってコッソリ仕込んでコントロールしてたな。
まぁ、やってやるぞというモチベーションは大事だとおもうよ。
ガンバってね。
0715デフォルトの名無しさん (スップ Sdf3-1/aj)
垢版 |
2017/09/18(月) 11:43:19.16ID:lVEmBRA9d
>>713
姉貴のパソコンにサーバプログラム常駐させる
そいつがポートXXXで待ち構える

同じ家なのでネットワーク帯は同じで
自分のpcからポートXXXにメッセージ送信する

姉貴のサーバプログラムが受け取ってボリューム下げる処理をする

こんなことしてたってことかね?
0716デフォルトの名無しさん (ワッチョイ 939f-0QkJ)
垢版 |
2017/09/18(月) 12:01:08.52ID:9mrqYCJU0
>>715
まぁ大体そんな感じなんだが、急に音量小さくすると即効でばれるので、まず、姉貴PCの音量を取得するのが第一だな。
そこからスライダーでボリューム下げていった値をサーバーに順次送信しサーバープログラムがその値に応じて音量を徐々にフェードコントロールするといった具合だな。
0729デフォルトの名無しさん (スップ Sdf3-1/aj)
垢版 |
2017/09/19(火) 10:23:20.37ID:mIuFgC1Fd
初歩の初歩の初歩の質問なんだけど
あるPCにポートXXを口とするサーバソフトを同時に二つ立てることはできないよね?
1つめはXXを使うとしてその後にたてられた2つめはどうなる?
(スレチっぽくなってますがよろしくです...)
0730デフォルトの名無しさん (ワッチョイ 2be3-SGtB)
垢版 |
2017/09/19(火) 10:38:02.75ID:S6233VLa0
出来ます
サーバー側はリクエストに応じて複数のプロセスを起動し、
同じポート番号を使って複数のプロセスが受け答えします
各プロセスはそれぞれで生成したソケットを使ってクライアントとやり取りします
0731デフォルトの名無しさん (スップ Sdf3-1/aj)
垢版 |
2017/09/19(火) 10:57:49.02ID:mIuFgC1Fd
>>730
それってプログラム内でforkして子プロセスを作る場合の話です?
サーバソフトAとサーバソフトBの両立ができたとすると
ポートXX使用します!ってのはどこでどちらを使うと判断するのでしょうか...
0738デフォルトの名無しさん (ワッチョイ ab1c-/PGn)
垢版 |
2017/09/19(火) 20:12:29.29ID:4ZFv917O0
C++98ではできない
C++11以後できるようになった
だろ、通信は本質的にマルチタスクだ
0741デフォルトの名無しさん (ワッチョイ 6123-pFfB)
垢版 |
2017/09/20(水) 03:12:29.17ID:E3lPvo/Y0
bind()する時のローカルのIPアドレスを別々にすれば同一ポートで別々のサーバプログラムって動かないの?
0742デフォルトの名無しさん (ワッチョイ 016f-V8Sm)
垢版 |
2017/09/20(水) 04:49:07.58ID:uOAr6bd90
>>741
だから動くってば
ユニークである必要があるのはIPアドレス:ポート番号の組み合わせだから

>>730
>各プロセスはそれぞれで生成したソケットを使って
まさかその生成されたソケットがサーバーと同じポート番号を持つとか思ってないよな?

いずれにせよこんなのはネットワーク初心者の話題であってC++とは何も関係ない
0744742 (ワッチョイ 016f-V8Sm)
垢版 |
2017/09/20(水) 10:56:07.53ID:uOAr6bd90
自己訂正
>まさかその生成されたソケットがサーバーと同じポート番号を持つとか思ってないよな?
あはは、これは俺の勘違いだったわ
acceptで返されるソケットはlistenポートと同じポート番号を持っている
0745デフォルトの名無しさん (ワッチョイ 0665-hoCt)
垢版 |
2017/09/21(木) 05:09:49.50ID:t8iqXrAz0
質問です。

{ 10/*%*/ } = { a,b,c };

というのは、
a = 10%
b = 10%
c = 10%
なのでしょうか?それとも、
a+b+c = 10%
なのでしょうか?
0746デフォルトの名無しさん (ワッチョイ de23-KbB0)
垢版 |
2017/09/21(木) 05:48:27.92ID:eSaSp7RC0
C++を習得するのに莫大な時間を費やしました。

C++のプロフェッショナルなプログラマーになりたかった。

なのに、ハード系の知識が無いと言う理由で、もらう仕事はVB.NET、C#.NET系ばかりでした。
0747デフォルトの名無しさん (ワッチョイ de23-KbB0)
垢版 |
2017/09/21(木) 05:51:26.56ID:eSaSp7RC0
質問を書くのを忘れやんした。

C++の仕事ってハード系、通信系、制御系以外、通常業務のシステム開発はないんでしょうか?
0748デフォルトの名無しさん (ワッチョイ 8a9f-Dwg9)
垢版 |
2017/09/21(木) 06:00:29.19ID:Bo0/1phe0
ポート重複で同じアドレスでBananaサーバーみたいなラックマウントサーバーの仕組みってあれは一つのサーバーがlistenで待って接続してきたクライアントの処理を複数の子サーバーに割り振っているだけなのか?
0754デフォルトの名無しさん (ワッチョイ 8a4b-nCCx)
垢版 |
2017/09/21(木) 13:21:38.51ID:TbHBi0+x0
>>752
PODがかかわってる部分はあるけど基本として理解しておくべきことは
=default,=delete指定はコンストラクタの宣言でも定義でもない
ということ

つまり>>749の文脈では
struct unko { unko()=delete; };
int main() { unko u{}; }

struct unko {};
int main() { unko u{}; }
と等価でありuはaggregate初期化されコンストラクタは呼ばれないからエラーにならない
(unko();みたいにはっきりとデフォルトコンストラクタが呼ばれる状況ならエラーになる)
0756デフォルトの名無しさん (オッペケ Sra3-u5jE)
垢版 |
2017/09/21(木) 17:36:23.55ID:E1HbcZFyr
>>752
規格によると unko u{}; は
8.5/p17『If the initializer is a (non-parenthesized) braced-init-list, the object or reference is list-initialized』によりリスト初期化される
リスト初期化は8.5.4/p3『If T is an aggregate, aggregate initialization is performed』
に該当するのでコンストラクターが呼ばれずにaggregate初期化される。

なおaggregateの定義は8.5.1/p1により『array or a class (Clause 9) with no user-provided constructors (12.1), no (略)』
ここで8.4.1/p1により「=delete」は関数本体だが、
8.4.2/p5によりuser providedではないと見なされている(たぶん)
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況