トップページ⇒tech
1001コメント288KB

【初心者歓迎】C/C++室 Ver.95【環境依存OK】 [転載禁止]©5ch.io

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2015/02/14(土) 09:15:14.82ID:FDUkjNpd
エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。

◆ソースのインデントについて
半角空白やTABでのインデントはスレに貼ると無くなります。
そのため、アップローダーに上げるのも手ですが直接貼る場合は、
全角空白か に置換すると見栄えだけはよくなります。

【アップローダー】(質問が長い時はココ使うと便利)
http://codepad.org/ (コンパイルもできるし出力結果も得られる[]privateをチェック)
http://ideone.com/ (時間帯によってはcodepadが重い事があるのでここも利用)

前スレ
【初心者歓迎】C/C++室 Ver.94【環境依存OK】 [転載禁止]2ch.net
http://peace.2ch.net/test/read.cgi/tech/1417179292/
0002憲法に守られる在日スパイ・創価・ヤクザ2015/02/14(土) 09:44:21.91ID:jU7Z8cXF
マスコミが絶対に触れない事実
注)自民党以外が在日から帰化したスパイ、またはその影響下にあると仮定してご覧ください。

よく言われる
失われた20年 → 約20年前 初めて自民党が単独過半数を割る(小沢の新生党が与党介入)※
失われた15年 → 約15年前 自公の連立政権が始まる  (公明党の与党介入) /

※このとき、初めて80円/ドルという超円高誘導されて、日本の製造業は衰退・空洞化
 =中国・韓国が台頭し始める。日本の技術者が、大量に韓国などに引き抜かれるようになる。
 イオン(民主党・岡田家)や大型パチンコ店が、地方経済や商店街を食いつぶすための、
 大店立地法が成立。在日パチンコ屋のCM・チラシが解禁・大型チェーン展開が始まる。
 日本の学力低下が目的の「ゆとり教育」の本格導入。(後ろ2つは、17年前。)
※このときの羽田首相(新生党)の顔がモロに半島顔。
※このとき、小沢の新生党を全力で選挙支援したのが、創価学会といわれる。
※このとき、自民「単独」政権(公明抜きの単独2/3議席)の復活に、圧倒的不利な
 比例選挙制度へ法改悪↓

2014総選挙の比例当選率 
政党名     自民  公明  民主  維新  共産
比例区      68   26    35   30   20
合計数      291   35    73   41   21

比例当選率  23%   74%   48%  73%   95%  ←※

共産・公明・維新は、比例制度を廃止すれば消滅w 

参考)
民主党は、超円高誘導でパナソニックやシャープ、ソニーを潰す気だった?
http://www.youtube.com/watch?v=iG_oaqU0pEM
帰化朝鮮人ばかりが政治家を目指す国?日本
http://www.youtube.com/watch?v=CxIGOhFT4g8  続く
0003憲法に守られる在日スパイ・創価・ヤクザ2015/02/14(土) 09:44:51.39ID:jU7Z8cXF
続き 日本に借金を抱え込ませたのは小沢一郎(たぶん在日帰化)。

小沢が430兆円
村山(旧社会党:この人も帰化?)内閣がプラス200兆円 
トータル630兆円
(詳しくは日米構造協議で検索)

今ある借金は、これとその利息では?

小沢は、自民党時代に日本に爆弾を抱えさせた上に、そのバラマキ公共投資で得た
支持基盤をごっそり自民党から引き抜き(仲間を引き連れ離党)、
自民を単独過半数割れに追い込んだ。
そして、第3極政党(新生党→公明党)を介入させ、韓国や在日へ利益誘導してきた。
日本を借金大国にしたのは自民党だ!と、自分で仕込んだ火種を野党側から
追求する自作自演劇によって、民主党への政権交代につなげた。
※自民党以外の議員は、日本姓を名乗る帰化朝鮮人か、その影響下にあると仮定。

という流れではないでしょうか。
0004デフォルトの名無しさん2015/02/14(土) 10:43:09.31ID:81zUaPG6
こんなこと考えた俺天才!的な糞コード
argc--;
argv++;
0005デフォルトの名無しさん2015/02/14(土) 11:23:41.71ID:EUuNKb/r
そんなコピーのしかたをするのは領域の最後までに必ず\0がある文字列だけだろ?w
コピー先にコピー元より狭い領域を指定するのもバカだしw
0006デフォルトの名無しさん2015/02/14(土) 18:13:46.17ID:bwAzeASM
tgmathって使ってる人いる?
正直、要らん仕様だと思うんだ
0007デフォルトの名無しさん2015/02/14(土) 18:49:56.86ID:L7bxzS28
C++のオーバーロードが羨ましくてしかたないんだろうなあ
っていうあれか
0008デフォルトの名無しさん2015/02/14(土) 21:07:23.35ID:+QnWCZ/d
C++のオーバーロードは仕様がとんでもないことになっているからね。
13節丸ごと説明にかけてると思ったら実は14節テンプレートの
パーシャルオーダリング含めたC++言語仕様で最も難解な内容だったし。
Cのtgmath程度が健全なレベル。
0009デフォルトの名無しさん2015/02/15(日) 01:40:34.87ID:GySGCLGy
C++オーバーロードはみんな使ってる
Cの<tgmath.h>は誰もつかってない
これが真実
0010デフォルトの名無しさん2015/02/15(日) 01:44:05.69ID:Yq9FTKtU
テキストエディタで書いて最短コンパイル一発で実行ファイル生成ってのを諦めてしまえばもっとシンプルに出来ると思うんだよね
プロトタイプは実装コードを解析して必要とするオーバーロード関数や外部識別子を持たせるようにするとかさ
0011デフォルトの名無しさん2015/02/15(日) 02:09:09.33ID:+lcmmVEa
バカの考えることはたいていは間違ってるよ
0012デフォルトの名無しさん2015/02/15(日) 02:28:18.83ID:KyJI8M6v
煽る人は大抵中身無いよ
ブーメランって言いたければ言えば?
0013デフォルトの名無しさん2015/02/15(日) 07:06:16.00ID:Qwk5nQv8
>>10
もう、そうなってるとおもうよ、VC++ あたりはどうだかしらないが
ソース -> オブジェクト
オブジェクト + ライブラリ-> 実行形式
0014デフォルトの名無しさん2015/02/15(日) 07:56:43.33ID:2lTOko0D
>>10
・グローバルでセミコロンで終わる宣言の廃止
・クラス定義を変数宣言や関数のプロトタイプ宣言と一緒に行わない文法
この二つがあれば複数ファイルを同時にコンパイルできることはC#で実証されている
Javaのようにクラス名からそのファイルを探す仕組みは無くてもいい
0015デフォルトの名無しさん2015/02/15(日) 09:09:37.81ID:+lcmmVEa
現行の C でも C++ でも複数ファイル同時コンパイルくらいできるし
普通 make するときは -j オプションつけるじゃん。速いから。
メジャーな IDE、VC や xcode は勝手にやってくれるし。
0016デフォルトの名無しさん2015/02/15(日) 12:25:25.83ID:/CNeEnsG
queue<pair<string,bool> > cutInStack;
cutInStack.push(make_pair<cutInImageFileName,reverse>);

エラーが起きるんですがなんでかわかりません
0017デフォルトの名無しさん2015/02/15(日) 12:36:26.48ID:lDLakZlT
make_pair(cutInImageFileName,reverse)にすればいいと思うよ
0018デフォルトの名無しさん2015/02/15(日) 13:37:57.41ID:+ULz+cy7
前スレでポインタの質問した者ですが、皆さんのおかげでポインタのイメージががっちりつかめました。
ありがとうございます。
0019デフォルトの名無しさん2015/02/16(月) 14:20:55.97ID:L0EKTU4N
centos 6で、libtermcap.a が見あたらないのですが、入手方法についてどなたかご存じではないですか
0020デフォルトの名無しさん2015/02/16(月) 18:07:52.66ID:93EvvdXC
if( *a++ = *b++ ){
・・・
}

の時、
�@aが\0だったら抜ける
�Abが\0だったら抜ける
�B*aに*bを代入する
�Caを加算する
�Dbを加算する
�E・・・の実行
で合ってますかね。
0021デフォルトの名無しさん2015/02/16(月) 18:17:52.25ID:swezBUYA
3
4
5
1
6
0022デフォルトの名無しさん2015/02/16(月) 18:28:13.80ID:zwe4WhUj
*bを*aに代入
*aが\0なら抜ける

a++, b++のタイミングは知らないが
いずれにせよ加算されてるはず
0023デフォルトの名無しさん2015/02/16(月) 18:51:03.76ID:93EvvdXC
はー、なるほど、

(*a=*b)で条件が(*a)になって (*a) だけが評価されるようになるんですね。
代入の後に加算するから、加算した後の*aが\0だったら抜けるって事ですね。

はー、なるほど、目から鱗ですわ
0024デフォルトの名無しさん2015/02/16(月) 19:14:18.46ID:9v9OeP8e
いや、aを加算する前の*aが\0だったら抜ける
後置++はそういう動き
0025222015/02/16(月) 19:20:34.60ID:zwe4WhUj
>>23
ごめんごめん、多分誤解を与えてる。

> 代入の後に加算するから、加算した後の*aが\0だったら抜けるって事ですね。

加算も加えて書くと、代入→判断→加算ね。

判断の後に加算するから、ポインタはそれぞれ判断に使った位置の、一個後ろさすことになる。
0026202015/02/16(月) 19:40:17.40ID:93EvvdXC
なるほど、

後置++は式全体(この場合ifの判断も含む)を実行した後に加算されるって事ですね。
(*a=*b) で代入して、(*a)がfalseか判断して、if( )の式が終わった時点でa++,b++を実行って事ですね。

よく分かりました。勉強になりました。
0027デフォルトの名無しさん2015/02/16(月) 19:50:52.03ID:OwoQ0wy7
その 式の終わった時点=副作用完了点 だけども、
規定してるのは、「ここまでには加算が済んでいる」であって
「ここ以降で加算する」じゃない微妙なお話
0028デフォルトの名無しさん2015/02/16(月) 22:59:12.48ID:DCT6jM0C
>>26
副作用完了点については
ttps://www.jpcert.or.jp/sc-rules/c-exp30-c.html
とかを参照

あと部分式や関数の引数の評価順序は特に定められているものを
除いては規定されていないことも関連して覚えておくとよいです。
ttps://www.jpcert.or.jp/sc-rules/c-exp10-c.html

例)a = f() + g(); で a に代入されるのはいつでも f() と g() を加えたものだが、
f() と g() のどちらが先に実行されるかは決められていない。
0029デフォルトの名無しさん2015/02/16(月) 23:13:48.56ID:6Hn+VZlk
cout << file.getc() << file.getc()
とやったとき、読んだ順に書いてくれないということ?
0030デフォルトの名無しさん2015/02/16(月) 23:18:24.93ID:uhKkujbi
糞言語の糞ライブラリの洗礼だな
0031デフォルトの名無しさん2015/02/16(月) 23:49:38.04ID:m1gpJ7KB
>>28
>特に定められているものを除いては

わざわざ探してきて url 貼ってるんだから読んでよ
0032デフォルトの名無しさん2015/02/16(月) 23:57:02.61ID:0bcBlPt4
operator<< は特に定められてないよな?
0033202015/02/17(火) 00:00:03.22ID:TDLatExy
はー、なるほど。
副作用完了点までにある式は、特に定められた評価順序が有る物以外は同じで、
左から右に実行されるとかが保証されていないって事ですね。

で、その特に定められた評価順序以外で、
左から右とか右から左みたいに評価順序に依存するような式は駄目って事ですね。

質問して良かったですよ。少し賢くなりました。
0034デフォルトの名無しさん2015/02/17(火) 00:00:36.57ID:MxR2EwY1
operator<< も operator+ も
特に定められてないことについては同じ
0035282015/02/17(火) 00:02:54.49ID:40ZPjrIU
>>31
どこに貼ってる?
0036デフォルトの名無しさん2015/02/17(火) 04:01:39.41ID:Yc/tlv/f
> +の評価順序も定まっていない件
これはCの場合はって事でいいんかな、
それともC++のoperator+も定まっていない?
定まっていない時は、operatorの種類は限定されている?

というのも、&&を利用したテクニックとしてよく
bool continue = true;
continue = continue && f1();
continue = continue && f2();
continue = continue && f3();

というコードを書くが、operatorの種類に関わらず定まっていないのなら、
continueが途中でfalseになったとしても、その後のf2やf3が環境によっては評価されてしまうからまずい書き方になる
0037デフォルトの名無しさん2015/02/17(火) 08:02:04.71ID:HzudLjaJ
>>36
演算子による
false & f(); はf()が評価されるが
false && f(); は評価されない
0038デフォルトの名無しさん2015/02/17(火) 08:28:26.81ID:z7G8tE0v
>>29
ダメだろ
0039デフォルトの名無しさん2015/02/17(火) 12:44:01.01ID:6GSUCG0L
>>36
c,c++で項の評価順が定まっているのは組み込みの && || , ? の四つの演算子
それ以外の組み込み演算子とオーバーロードしたoperatorの場合は定まっていない
0040デフォルトの名無しさん2015/02/17(火) 13:25:14.02ID:fNnscWpf
cout << file.getc() << file.getc() << file.getc() << file.getc() << file.getc();

これに"hello"と与えて"hello"と出力される保証はないということか?
0041デフォルトの名無しさん2015/02/17(火) 13:30:38.88ID:fNnscWpf
遅くなっても良いから、評価順序が確定してるC++が欲しくなった
0042デフォルトの名無しさん2015/02/17(火) 13:34:38.81ID:LvyQFEL3
((((cout << file.getc()) << file.getc()) << file.getc()) << file.getc()) << file.getc();
お"ぇ"
0043デフォルトの名無しさん2015/02/17(火) 14:05:29.17ID:6GSUCG0L
>>40
保証はない

ちなみにcでのこういうのも同じで保証はない
printf("%c%c%c%c%c", fgetc(fp), fgetc(fp), fgetc(fp), fgetc(fp), fgetc(fp));

>>42は正しく理解できていない人の典型的な例
その式は>>40と等価の式で実行結果的には余分な括弧はまったく無意味
0044デフォルトの名無しさん2015/02/17(火) 14:27:48.03ID:iGz/Dczk
え?
括弧ぶち抜いて計算順序が不定になるの?
それ本当?
0045デフォルトの名無しさん2015/02/17(火) 14:29:32.39ID:iGz/Dczk
あ、ごめん。話を見間違えてた。
括弧で制御できるのは計算順序だけで、「計算に使われる個々の要素」がいつ評価されるかとは別の話だった。
すまん。44は忘れて。
0046デフォルトの名無しさん2015/02/17(火) 15:00:05.33ID:gdHZDZHG
昔は速度や実装の都合で仕方ないこともあっただろうけど
今となっては評価順序確定的な方がメリット大きそう
0047デフォルトの名無しさん2015/02/17(火) 16:01:39.12ID:Yc/tlv/f
そうだろうけど、それを同じ言語の中で行うのは割と危険だと思う、
環境依存を増やすのは、動かしてみたらいけたという手法で×を貰う人がさらに増える事に繋がる
0048デフォルトの名無しさん2015/02/17(火) 19:18:12.76ID:HzudLjaJ
言語仕様で決めるとコンパイラの最適化を阻害する
とゴネる人たちをまとめて国際化規格にするための妥協の産物。
0049デフォルトの名無しさん2015/02/17(火) 22:26:01.36ID:J4a0mND/
質問があります。環境はMinGW-w64です。
struct A {
int *p; size_t s; int u;
};
なぜsizeof(struct A)が24になるのでしょうか。
私は20になると思ったのに。
0050デフォルトの名無しさん2015/02/17(火) 22:32:12.07ID:ToPvHKqH
構造体のデフォルトアライメントが8バイトになってるんでないの?知らんけど
0051デフォルトの名無しさん2015/02/17(火) 22:32:37.78ID:xgmY9b+s
alignを指定してないから
コンパイラはalignを指定していない構造体に、最適化のために適宜パディングを入れていい
0052デフォルトの名無しさん2015/02/17(火) 22:36:49.93ID:S2/s/wa6
>>49
X ar[2];
sizeof arがsizeof(X)の2倍にならなかったら嫌だろ?
0053デフォルトの名無しさん2015/02/17(火) 22:38:38.86ID:J4a0mND/
alignとpackの違いって何ですか?
packは
#include <pshpack4.h>
...
#include <poppack.h>
などで指定するヤツですよね?
0054デフォルトの名無しさん2015/02/17(火) 22:51:23.08ID:fCIGE3+K
的を外した説明ばかりでわろたw
0055デフォルトの名無しさん2015/02/17(火) 22:52:02.91ID:J4a0mND/
>>51-52
ありがとうございます。
0056デフォルトの名無しさん2015/02/17(火) 23:57:09.67ID:T1Z1ruGP
>>53
alignは型(クラス)全体のアラインメント
packはクラスの中での各データメンバのアラインメント
を指定するもの
0057デフォルトの名無しさん2015/02/18(水) 00:43:01.28ID:fxWFvcN5
Win32APIを利用してC/C++でテキストエディタを作っています。
アンドゥ/リドゥはどうやって実装すればいいのでしょうか?
メモリの許す限りアンドゥできるようにしたいと思っております。
テキスト全体を丸々別のメモリ領域にコピーしていけば簡単ですが、文字1つ打ち込むたびに丸々コピーするのもおかしい気がしますし、
かといって様々な操作を記録していくのも管理が大変な気がします。
1文字打ったのをアンドゥで戻す程度なら大変ではないですが、
特定の文字列を一気に複数箇所程度置換したりしたら管理が大変です。
どのように実装するのがいいのでしょうか。
0058片山博文MZ ◆T6xkBnTXz7B0 2015/02/18(水) 00:57:26.00ID:9VF3MRJc
alignment requirement of type...
0059片山博文MZ ◆T6xkBnTXz7B0 2015/02/18(水) 01:05:06.78ID:9VF3MRJc
>>57
undo bufferは、数学的には差分のリストで管理する。
つまり、beforeの状態とafterの状態のペアのリスト。std::vectorなどのC++のコンテナを使う。
元に戻せるか(can undo)、やり直せるか(can redo)の状態も管理する必要がある。
また、メモリーの負担も大きくなりすぎないようにサイズを制限する。
0060片山博文MZ ◆T6xkBnTXz7B0 2015/02/18(水) 01:16:47.14ID:9VF3MRJc
状態の差分をどのように考えるか。
例えば、三行目に「あいうえお」という行を追加した場合、
全体の行の並びの状態は文字列のリストと見なせるので、
その差分は、(3,'+line',"あいうえお")である。その逆は、三行目を取り除くであるから(3,'-line')。
0061片山博文MZ ◆T6xkBnTXz7B0 2015/02/18(水) 01:23:58.25ID:9VF3MRJc
差分に複数の種類がある場合、それらを統一的に扱いたい。
そこで仮想関数や基底クラス、関数ポインターが役立つ。
0062デフォルトの名無しさん2015/02/18(水) 01:32:27.71ID:iIp4Xj1j
企業の名を語って問題化してる詐欺師が
0063片山博文MZ ◆T6xkBnTXz7B0 2015/02/18(水) 01:53:26.50ID:9VF3MRJc
「情報数学」と「情報算数」の違いだね。
0064デフォルトの名無しさん2015/02/18(水) 01:55:27.46ID:6FYN6nWZ
>>61
先ほどスレを立てて質問してしまったものです。
getchar();を追加するようアドバイスいただいたものです。
次の項へ進んだのですがそこでも同様のアクシデントが発生してしまいます。
http://bituse.info/c/6
こちらのページです。
一度目の「文字を入力してください」の表示はできるのですが文字を1バイト分入力して
エンターキーを押すとやはり即座に終了してしまいます。
初心者ながらにgetcahr();を意味もわからずに同様に入れてみましたがやはりダメでした。
初歩の初歩でとても恥ずかしいですが全くわかりません。
またお助けください。
0065片山博文MZ ◆T6xkBnTXz7B0 2015/02/18(水) 02:06:21.10ID:9VF3MRJc
>>64
mainの最後あたりに「デバッグ」→「ブレークポイントの設定」
0066片山博文MZ ◆T6xkBnTXz7B0 2015/02/18(水) 02:09:15.60ID:9VF3MRJc
原因は「入力バッファに文字が入ったままの状態だから」。
ブレークポイントを設定すれば、そこでプログラムの実行は止まる。
0067片山博文MZ ◆T6xkBnTXz7B0 2015/02/18(水) 02:25:01.47ID:9VF3MRJc
ソースの行の左側をクリックすれば、赤い丸がつく。
これがブレークポイント。プログラムを実行させると、そこで止まる。
黒い画面が消えるのはプログラムが終了したから。
0068572015/02/18(水) 12:18:48.23ID:fxWFvcN5
全く返信が来ないので、他のところで質問してみようと思います。
マルチポストになるためこちらでの質問は締め切らせていただきます。
スレ汚し失礼しました。
0069デフォルトの名無しさん2015/02/18(水) 12:43:25.56ID:a50GzuXq
>>57
各操作に、戻す操作を用意する。その方針なら、カーソル移動もUndoできる。
戻す操作を一時ファイルに記録していく。これでできます!
むかしは、メモリは、高価だった。メモリでやろうとしなかった。

その方針で、あとは、データ構造をきめる(各レコードに、レコード番号がある)
戻す操作が各レコードにある。

Redoは、どうやるのかしらない。Redoっているのかなぁ?
0070デフォルトの名無しさん2015/02/18(水) 13:10:35.62ID:kutO6lRc
締め切るって言われてから書き込む人って・・・
0071デフォルトの名無しさん2015/02/18(水) 15:47:44.68ID:4wXh5cyu
締め切るような馬鹿質問者の都合なんかどうでもいいだろ
質問者の利益を願わぬよう二他の連中が雑談してりゃいい
0072デフォルトの名無しさん2015/02/18(水) 15:59:07.96ID:4Qn9SljG
vector<MyStruct> data;
みたいなデータを使って、ある種の処理をしているのですが、
vectorの途中の要素を削除したり、追加したり、forループで全データを
読み出したり、変更したりする処理も沢山入っています。
こういう場合、vectorを使わずに、malloc, freeを使ってポインタによる
リスト構造を作成したらもう少し速度が向上すると思うのですが、
質問ですが、
一般に、vectorを使うより、ポインタ式のほうが速度は向上しますか?
速度が向上するとした場合、処理内容にもよると思いますが、何倍くらいになる可能性がありますか?
せいぜい1.5倍とかそんな程度でしょうか?あるいは数倍速くなる可能性ありますか?
経験ある人、コメントお願いします。
0073デフォルトの名無しさん2015/02/18(水) 16:13:54.41ID:WF/HB+Oc
>>72
std::vectorの途中の要素削除はサポートされてるけど速度を求めるなら当然やるべきではない
リスト構造にするならstd::listを使えばいいんじゃないの?
速度が何倍になるかはケースによりすぎるので誰も答えられない
0074デフォルトの名無しさん2015/02/18(水) 16:17:15.98ID:QJtcpUml
>>72
それは処理によって変わるから、両方作って比較してから選んでください
0075デフォルトの名無しさん2015/02/18(水) 16:26:10.71ID:dFtyN/e5
>>72
要素の途中を削除すると後ろの要素を全部前につめるようにコピーしなおすからそれが時間食う

要素の半分くらいの数を一度に削除したいとか、そういう、削除が多すぎる場合は一旦nullでも入れといて
二本目のvectorに手動で移すようなのがまだマシかもね

v[j] = null; v[k] = null; // ....
for (int i = 0; i < v.size(); i++) if (v->at(i) != null) v2->push_back(v->at(i));
v->clear(); // 一気に全要素削除
t = v;v = v2;v2 = v; // 場合によってはこういう差し替えをしてもいいかも

あくまでvectorでやりたい場合は、ってことで
0076デフォルトの名無しさん2015/02/18(水) 17:08:14.85ID:82ISwL6X
>>75
なにいってんだおまえ
0077デフォルトの名無しさん2015/02/18(水) 17:18:41.39ID:h14sfo2k
vectorは途中への追加・削除は想定してないよ、それによって連続性の保障・生配列と等価なコスト等の恩恵がある、
やりたいなら素直にlist使っとけ
0078デフォルトの名無しさん2015/02/18(水) 17:21:43.94ID:h14sfo2k
ちょっと語弊があった
メンバメソッドに途中追加・削除はあるけど再配置コストでかいから、
パフォーマンス気にするなら素直にlist使っとけって意味ね
0079752015/02/18(水) 18:40:44.15ID:dFtyN/e5
>>76以外のみんなには伝わってると思うけど一応ね
https://ideone.com/U3UV4M
0080デフォルトの名無しさん2015/02/18(水) 18:46:48.45ID:wgmWwjwn
>>79
v[j]=null に該当するコードが無いな
0081デフォルトの名無しさん2015/02/18(水) 18:53:48.49ID:wgmWwjwn
>>79
これはひどい
0082デフォルトの名無しさん2015/02/18(水) 18:58:42.15ID:HYJih66l
>>79
a b cをポインターにするメリットがなさそうなのに、どうしてそんなことを
0083デフォルトの名無しさん2015/02/18(水) 19:05:39.81ID:vY8D60aZ
>>79
比較がなきゃ意味がないんじゃないか
0084デフォルトの名無しさん2015/02/18(水) 19:45:28.88ID:lyHrqUwP
単純に元の配列に、削除や追加を行って新しい配列を作るって事だろう。
変更だったら元の配列直接で良いが、削除追加は新しい配列にコピーした方が良いな。

って事を言いたいんじゃないの
0085デフォルトの名無しさん2015/02/18(水) 19:56:06.81ID:Cje1DbfK
ゴミがゴミみたいなコードを貼るのはよしてくれよ。吐き気がする。
0086デフォルトの名無しさん2015/02/18(水) 20:06:27.20ID:3kPRLP3r
>>84
お前の憶測代弁を誰が望んでる?
0087デフォルトの名無しさん2015/02/18(水) 20:09:32.80ID:h14sfo2k
>>79
むしゃくしゃしてやった
https://ideone.com/HSRAZ0
0088752015/02/18(水) 20:33:25.08ID:hhBoAooq
>>84
二本目のvector使うことによって
eraseをpush_backに置き換えてるのが肝

もしeraseしすぎて困ってて
二本目のvector確保しても平気なときとか

>>82
t = b;b = c;c = t;
これをポインタでしたかっただけ
本旨に対して瑣末なんでお好きにどうぞ
0089デフォルトの名無しさん2015/02/18(水) 20:41:33.69ID:YAiiiwp8
>>88
もういいよおまえ馬鹿なの分かったから!
他の人のコードを黙って見てろ
0090デフォルトの名無しさん2015/02/18(水) 20:44:23.53ID:YAiiiwp8
>>87
&と%の間違いがあるからbの減り方が少なすぎるんだな
0091デフォルトの名無しさん2015/02/18(水) 21:10:04.63ID:h14sfo2k
>>90
言われて気付いた、間違ってたわ
0092デフォルトの名無しさん2015/02/18(水) 21:31:03.02ID:mNlNVJ9p
何かおすすめの書籍有りませんか?
0093デフォルトの名無しさん2015/02/18(水) 22:01:35.36ID:m9smIoC1
More Effective C++

俺は読んだことないけど
0094デフォルトの名無しさん2015/02/18(水) 22:14:51.82ID:mNlNVJ9p
>>93
あんがと。買ってみる
0095デフォルトの名無しさん2015/02/19(木) 00:18:51.76ID:1VbRaqSZ
C++11,14対応の新版 Effective Modern C++ (ただし日本語翻訳版はまだない)
がでてるのに時代遅れの旧版すすめてどうするんだ

もちろん今でも通用することも載ってるのでそこをわかったうえで読むならいいけどさ
0096デフォルトの名無しさん2015/02/19(木) 00:43:32.52ID:MJrK0vGE
ああ、そんなタイトルだったか
読んでないからMoreが最新だと思い込んでた
0097デフォルトの名無しさん2015/02/19(木) 03:48:50.49ID:jfoHSBtL
>>95
買ったきり積んであるわ
0098デフォルトの名無しさん2015/02/19(木) 17:27:13.13ID:/iG5WZ4H
OpenProcess
ReadProcessMemory
WriteProcessMemory
がDLLインジェクション?され、欲しい結果がまともに得られません。
なので同等の機能を持つ
OpenProcess2
ReadProcessMemory2
WriteProcessMemory2
という別の関数を作りたいのですが技術的に可能ですか?
元の関数の中身の確かめ方なども教えてほしいです。
0099デフォルトの名無しさん2015/02/19(木) 17:51:45.22ID:MJrK0vGE
プロセス間通信したい→他の方法使え
実行中プロセスの中身が見たい→デバッガ使え
他の実行中プロセスを不正に書き換えたい→諦めろ
0100デフォルトの名無しさん2015/02/19(木) 18:07:06.84ID:+x92KaMa
チーターかよ
banされるからやめとけ
0101デフォルトの名無しさん2015/02/19(木) 19:04:12.08ID:eawGJ+OB
今は反芻している
0102デフォルトの名無しさん2015/02/19(木) 20:25:08.18ID:/iG5WZ4H
なんだこのスレ。
0103デフォルトの名無しさん2015/02/19(木) 20:26:29.37ID:ab5Vc4qB
なんでみんな怒ってるの?
0104デフォルトの名無しさん2015/02/19(木) 21:05:44.81ID:0ZY/+Dfb
>>65-67
お返事が遅くなりすみません。
ブレークポイントの挿入できちんと出来ました。
せっかく原因として書いていただいたことも勉強不足でよくわかりませんが
今後勉強を重ねたいと思います、ご丁寧にありがとう御座いました。
また何度もお世話になると思いますがどうぞよろしくお願いします。
0105デフォルトの名無しさん2015/02/19(木) 21:43:42.43ID:sOrLlryh
>>104
おう!またこいよ!絶対だぞ!来なかったらこっちから訪ねて行くからな!
0106デフォルトの名無しさん2015/02/19(木) 23:05:18.65ID:HdusV7c5
>>98
インジェクト前のアドレスに戻すのは?
0107デフォルトの名無しさん2015/02/20(金) 00:09:56.63ID:BPnuj7+1
元のアドレスには別のプログラムが置かれ
kernelの実体は別の場所に移ってるような?
その別のプログラムがkernelとの橋渡しをして
保護対象のプロセスにアクセスするようなら
デタラメな値を返しているような?
ということはkernelの実体を探せばいいのだろうか。
さっぱり分からんなぁ・・・。
0108デフォルトの名無しさん2015/02/21(土) 11:37:43.28ID:qgl0G9M7
ドライバ書いたほうが早い
ドライバの書き方は本買って嫁
終了
0109デフォルトの名無しさん2015/02/21(土) 14:26:15.25ID:s76k4WVR
むしろみんな怒ってる前提で読むと面白いな
0110デフォルトの名無しさん2015/02/21(土) 17:59:05.20ID:qCqW+14K
人格否定大罵倒こそ2chの花ですから‥糞呼ばわりすらされなくなる(相手にされなくなる)とちょっとさみしい‥
0111片山博文MZ ◆T6xkBnTXz7B0 2015/02/21(土) 18:45:34.67ID:swM6o0zc
>>110
QZさん、こんにーちわ。
相変わらずはっちゃけてるかい?
0112デフォルトの名無しさん2015/02/21(土) 19:40:55.07ID:qCqW+14K
>>111
最近ネタがなくてさー
なんか手伝えることないですか?モリタモ 500 でお受けしますぅ‥
0113片山博文MZ ◆T6xkBnTXz7B0 2015/02/21(土) 19:46:55.40ID:swM6o0zc
>>112
よろしい。ならばURLをSVG画像にする変換器を作ってくれたら
アマゾンギフト券3000円分差し上げよう。
言語はJavaScript。トリップを忘れずに。
0114デフォルトの名無しさん2015/02/21(土) 19:53:01.65ID:qCqW+14K
Javascript ですか‥一からやる気力がないからいいですぅ‥
0115片山博文MZ ◆T6xkBnTXz7B0 2015/02/21(土) 19:59:12.19ID:swM6o0zc
>>114
他の言語ならWebMoney2000円分になるが。。。諸君には作れるかな?
0116デフォルトの名無しさん2015/02/21(土) 21:27:54.79ID:0DxoAiRe
こう言うのに変換すれば良いのか?
<svg height="30" width="200">
<text x="0" y="15" fill="red">I love SVG!</text>
</svg>
0117デフォルトの名無しさん2015/02/21(土) 21:33:16.62ID:ZtjHl7Bs
ここでやるなよ(´・ω・`)
0118 ◆n73aCqyOJlII 2015/02/21(土) 21:39:59.16ID:15/lOcmw
https://ideone.com/bzFtvd
これで終了
ちゃんと送れよな
0119片山博文MZ ◆T6xkBnTXz7B0 2015/02/21(土) 21:40:44.70ID:swM6o0zc
>>116
そうだ。

雑談スレへ移動するぞ。
0120デフォルトの名無しさん2015/02/21(土) 22:10:13.06ID:swM6o0zc
プログラミング雑談スレ ♯♯ [転載禁止]・2ch.net
http://peace.2ch.net/test/read.cgi/tech/1419929875/
0121デフォルトの名無しさん2015/02/22(日) 18:24:58.11ID:/Z4bCbY2
つまんない質問ですみませんが
下のような場合、get_hello_1はOKで他は全部ダメ?

std::string get_hello_1()
{
return std::string("hello");
}

std::string get_hello_2()
{
return "hello";
}

char* get_hello_3()
{
return "hello";
}

char* get_hello_4()
{
char buf[255];
strcpy(buf, "hello");
return buf;
}
0122デフォルトの名無しさん2015/02/22(日) 18:26:06.45ID:uKVn+atI
4だけダメ
0123デフォルトの名無しさん2015/02/22(日) 18:28:03.38ID:uKVn+atI
3は戻り値をconst char*にしたほうがいいね。
0124デフォルトの名無しさん2015/02/22(日) 18:41:15.04ID:J+2bP69K
おまえら適当だな
C++の文法上だめなのは3だけ
動作的にだめなのは4だけ
1と2は問題無し
0125デフォルトの名無しさん2015/02/22(日) 18:56:37.91ID:/Z4bCbY2
3は確かにconstが必要でした。すみません
2と3がOKなのは文字列定数だからメモリが消えることはなくずっと確保されているからでしょうか

ちなみにもう一つ。下の場合はstd::stringオブジェクトが生成されてOKになります?

std::string get_hello_5()
{
char buf[255];
strcpy(buf, "hello");
return buf;
}
0126デフォルトの名無しさん2015/02/22(日) 19:07:13.61ID:iZtaTVrr
おk
0127デフォルトの名無しさん2015/02/22(日) 19:43:32.73ID:eEB88Od1
3は別に動作に問題は無いんでしょ
0128デフォルトの名無しさん2015/02/22(日) 19:47:10.59ID:DVQv7PP4
C++11ならコンパイルできない
0129デフォルトの名無しさん2015/02/22(日) 19:47:40.84ID:eEB88Od1
へぇ、そうなんだ
0130デフォルトの名無しさん2015/02/22(日) 19:48:53.80ID:DVQv7PP4
ちがった、そうかコンパイルはできるのか
Werrorにしてたわ
0131デフォルトの名無しさん2015/02/22(日) 19:55:49.83ID:WuVa/Mh+
C++11より前は、文字列リテラルをchar*で受けられる(ただしdeprecated)
C++11で禁止されたけどVS2013ではオプション扱い(/Zc:strictStrings)
ということみたい
0132デフォルトの名無しさん2015/02/22(日) 20:08:51.77ID:DVQv7PP4
あれ、じゃあなんでコンパイル通ったんだろうと思ったけど、clangもgccもオプション付けなかったらあえて規格に反してコンパイルできるようにしてるのか
C++11では禁止されてるよみたいなWarningが出た。一度規格書確認しとくわ
0133デフォルトの名無しさん2015/02/22(日) 20:11:07.42ID:J+2bP69K
>>125
>文字列定数だからメモリが消えることはなくずっと確保されているからでしょうか

3はその通り
2は違う
2はstringのオブジェクトが作られてその生存期間が
呼び出し側のセミコロンまで続くから問題ない
0134デフォルトの名無しさん2015/02/22(日) 20:47:07.17ID:/Z4bCbY2
皆様ありがとうございした
いくつか誤解していたことが解決して大分理解が深まりました
0135デフォルトの名無しさん2015/02/22(日) 23:04:10.77ID:rzvFGJXk
std::string get_hello_2() {
 return "hello";
}
初心者が理解しづらい所だな。
関数の戻り値というものが誰がメモリを確保して
いつコンストラクタとデストラクタが呼ばれるのかわかりづらい。
ついでに大抵はRVOとNRVOの話が一緒に付いて来るので混乱を招く
0136デフォルトの名無しさん2015/02/23(月) 14:10:31.79ID:4Sh3heg0
こんにちは!
先先日より大変お世話になっております>>104です。
ブレークポイントでプログラムが終了してしまうのを防ぐことはできるようになったのですが、
(これは本筋とは逸れますが)これはあくまでチェック用なのですよね?
そこでプログラム的に(?)終了を防ぐ方法が知りたいのですが
お教え下さるか検索ワードを教えてもらえませんか?
よろしくお願いします。
0137片山博文MZ ◆T6xkBnTXz7B0 2015/02/23(月) 14:54:33.47ID:cWkGfwjm
>>136
無限ループ、Win32のSleep、Linuxのusleep
0138デフォルトの名無しさん2015/02/23(月) 14:54:59.84ID:umJpzUJj
>>136
最もシンプルに、余計なキーを打たない前提なら、getcharを二回連続で呼べばいい
一回目のgetcharは、scanfで拾えなかった改行文字が入ってくる
二回目はバッファが空なので、入力を待機する
0139デフォルトの名無しさん2015/02/23(月) 23:05:49.75ID:JzyWrWVg
>>135
構造体を返値とする、と類似しているとしてだいたい把握できる
0140デフォルトの名無しさん2015/02/23(月) 23:23:46.90ID:0KMyfxui
OpenCVを使い始めようとしており、全くの無知ですが教えてください。
未解決の外部シンボル_cvReleaseImageが関数_mainで参照されました
とエラーが出ている場合、どうしたらいいのでしょう?
関数が見つかりませんよ、と言うのはわかるのですがこの関数はどこにあるのでしょうか?
0141デフォルトの名無しさん2015/02/23(月) 23:32:51.19ID:yzL19jDh
_cvReleaseImageなる関数があるライブラリがリンクされていない様子
リンク設定を見直す、あるいは使ってるIDEのリンク設定の仕方を勉強する
0142デフォルトの名無しさん2015/02/23(月) 23:32:54.48ID:V8GOYsYk
それはOpenCVというより、一般的なC言語のライブラリのリンクの話だ。
0143デフォルトの名無しさん2015/02/23(月) 23:41:56.37ID:0KMyfxui
その_cvReleaseImageがあるlibファイルというのはどう判別すればいいのでしょうか
ソースコードなどからは判断できますか?
0144デフォルトの名無しさん2015/02/23(月) 23:43:04.95ID:yzL19jDh
OpenCVの説明ドキュメントでも読んでください
0145デフォルトの名無しさん2015/02/24(火) 00:01:23.84ID:611T6tT6
OpenCVのdllがリンクされてないだけだろ。静的リンクか動的リンクすれば使えるようになる
0146デフォルトの名無しさん2015/02/24(火) 00:34:02.94ID:2T0G4BSR
>>140
debian環境だとhighguiってのに入ってるね
MSDNのように明記されてないので
(ビルドオプションでどうとでもなるだろうから)
pkg-config opencv --libs
でso$をgrepしてreadlink -fで実態調べて
objdump -Dしてgrepという力技で特定しました
0147デフォルトの名無しさん2015/02/24(火) 04:33:22.06ID:tdW+LicI
>>143
nm コマンド
0148デフォルトの名無しさん2015/02/24(火) 04:47:24.38ID:2T0G4BSR
stripなもんで
0149デフォルトの名無しさん2015/02/24(火) 12:48:11.27ID:feW1KcM/
>>137
>>138
お返事遅くなりまして申し訳ありません。
片山さんのワードで検索してみたのですが、sleep関数を理解するにはまだまだ時間がかかりそうです。
それでも存在を知ることができてよかったです。ありがとうございました。
今のところは>>138さんのgetchar()を2回使う方法でうまくいってます。
解説もしていただき大変ありがたいです。ありがとうございました。
出来れば自分で解決できるのが望ましいのですが、自己解決できなかった時はまた来ます。
その時もどうぞよろしくお願いします。
0150デフォルトの名無しさん2015/02/24(火) 21:25:28.62ID:BgZzwVFO
>>149
>>104みたいないわゆるコンソールプログラムであればsleepを使う必要は全くないよ。
むしろ、無限ループでsleepだけだとプログラムを正常終了させる方法がなくなるからやめた方がいいよ。(この方法で正常終了させるようにするならら>>138の方法のが手っ取り早い)
0151デフォルトの名無しさん2015/02/25(水) 04:54:39.49ID:kAr5BbQr
%*cじゃあかんの?
0152デフォルトの名無しさん2015/02/25(水) 09:13:39.06ID:yPciKDTd
#include <stdio.h>
#define N 3
int main(){
int tmp,i,j,z,a[]={0,0,0};
char ans;
printf("整数を%d個入力してください\n",N);
for(i=0;i<N;i++){
printf(">\n");
scanf("%d", &a[i]);
}
for(z=0;z<N;z++){
for(j=N-1;j>z;j--){
if(a[j]<a[j-1]){
tmp=a[j];
a[j]=a[j-1];
a[j-1]=tmp;
}
}
}
for(i=0;i<N;i++){
printf("%d ",a[i]);
}
return 0;
}
0153デフォルトの名無しさん2015/02/28(土) 11:03:43.60ID:yyMmVQQk
c++ってcでも書けるけどcとc++混ざったような書き方って一般的にどうなんだろうか?
0154デフォルトの名無しさん2015/02/28(土) 12:00:46.80ID:j5d61nKt
>>152
3つ数字入力させて、合計を表示してるのは分かるけど、これくらいなら、電卓とか、エクセルでやったはうが早くない?
0155デフォルトの名無しさん2015/02/28(土) 12:06:03.03ID:8paVhiek
>>153
ライブラリによる。GUIとか
オブジェクト指向かどうか
STLをつかうか
0156デフォルトの名無しさん2015/02/28(土) 12:29:41.22ID:C0E19LHH
>>153
やる必要があれば、それも可能なのがC++の利点
今でこそC++らしい書き方のほうが多くなったけれども
「better C」という、C言語風だけどC++の良いとこ取りもする、というスタイルは
昔はけっこうよく行われてたよ
0157デフォルトの名無しさん2015/02/28(土) 13:17:05.10ID:jpnAzhvw
iostreamのマニュピレータはどうしても慣れない
0158デフォルトの名無しさん2015/02/28(土) 13:22:59.63ID:pzuzIoSR
better Cは絶滅中
0159デフォルトの名無しさん2015/02/28(土) 13:33:07.23ID:3oOu8rEl
printf()ってすごいね
0160デフォルトの名無しさん2015/02/28(土) 13:37:26.92ID:0w0p4VdY
boost::formatをprintfみたいな感じで書けるテンプレート関数使ってるな
0161デフォルトの名無しさん2015/02/28(土) 14:13:05.54ID:nS9zO5v8
boost.formatビルドが重いねん
0162デフォルトの名無しさん2015/02/28(土) 14:38:37.66ID:9NkDqAQU
今時STLは無いな
0163デフォルトの名無しさん2015/02/28(土) 15:04:24.71ID:RGSE2jA1
数ヶ月かけてコツコツ自作のプログラムを作っているうちに、苦し紛れに即席で
使ったグローバル変数があっちこっちに
合計十数個出てきて、収集がつかなくしまいました。
グローバル変数を上手い具合に管理する方法有りますか?
グローバル変数を使うなという意見は勘弁して下さい。私の能力では使わずにはプログラム組めませんので。
よろしく。
0164デフォルトの名無しさん2015/02/28(土) 15:07:38.09ID:0lfA+oAx
まずは糞コテ付けろ
0165デフォルトの名無しさん2015/02/28(土) 15:08:19.96ID:VJzk6ZT6
クラスで包んで誰が所有、利用するかを明確にすべき
0166デフォルトの名無しさん2015/02/28(土) 15:20:13.40ID:RGSE2jA1
>>165
クラスも使っているんですが
幾つかのクラスの中ではstatic変数も
使っていて、それも混乱の一因です。
クラスの中でstatic変数使うのは駄目でしょうか。
0167デフォルトの名無しさん2015/02/28(土) 15:42:23.94ID:rkeHMBrB
外から見えなきゃグローバル変数static変数何個使おうが気にしないな
0168デフォルトの名無しさん2015/02/28(土) 15:49:56.35ID:RGSE2jA1
>>167
publicにしています。
0169デフォルトの名無しさん2015/02/28(土) 15:54:02.54ID:4l+NWV3B
単にグローバル変数とか言われてもアドバイスできる奴なんていないと思うが。
その場しのぎで追加するようなグローバル変数は実際は引数渡しで事足りる場合ばっかりだろうからそこを作り直せば数が減って収集がつくと思うよ。
0170デフォルトの名無しさん2015/02/28(土) 16:25:53.70ID:jpnAzhvw
>>163
とりあえずグローバル構造体かクラスにまとめて全量洗い出して取捨選択
0171片山博文MZ ◆T6xkBnTXz7B0 2015/02/28(土) 21:57:16.55ID:OFsucKZW
アライメントとビットフィールドの挙動不審で困ってる。
#include <pshpack1.h>
typedef struct {
int a : 8;
int b;
} X;
#include <poppack.h>
このとき、sizeof(X)==8になるが、
メンバーaをint a : 9;にするとsizeof(X)==6になる。
何でやねん! ビットを増やしたらサイズが減るのか!
0172デフォルトの名無しさん2015/02/28(土) 22:00:53.02ID:kDCn/ge4
>>163
いいきっかけだから他のプログラムでも使用できそうな機能は機能毎にしちゃう
0173デフォルトの名無しさん2015/02/28(土) 22:18:47.25ID:yyMmVQQk
一個パズル作ったんだがどんどん機能拡張していってもはや何のソフトか
分からなくなってきた。
そろそろクラスとかも覚えて使ってみたいし新たに1からつくるか・・
0174片山博文MZ ◆T6xkBnTXz7B0 2015/02/28(土) 22:30:33.27ID:OFsucKZW
>>171
これを馬鹿にもわかるように論理的に説明して下さい。
0175デフォルトの名無しさん2015/02/28(土) 22:36:30.21ID:TqhvQe1k
>>171
>>1も読めないバカは去れ
0176片山博文MZ ◆T6xkBnTXz7B0 2015/02/28(土) 22:38:52.76ID:OFsucKZW
環境はMinGWです。
0177デフォルトの名無しさん2015/02/28(土) 22:47:07.04ID:kDCn/ge4
>>176
VC++ 2010 EEで両方8になったんですが
0178片山博文MZ ◆T6xkBnTXz7B0 2015/02/28(土) 23:34:27.82ID:OFsucKZW
>>177
ありがとう。
VC++とGCCのABIの違いのため-mms-bitfieldsつけないとダメだと。
ビットフィールドのせいで一日つぶれた。。。
0179デフォルトの名無しさん2015/03/01(日) 13:55:28.56ID:YTVpAllV
やべぇ、継承でわからなくなった・・・Orz
public privert potected これわかりやすく
解説したサイト知りませんか?
0180デフォルトの名無しさん2015/03/01(日) 14:04:57.89ID:SZqmQTGe
public だれでもアクセスできる
private そのクラスだけアクセスできる
protected そのクラスと、派生クラスだけアクセスできる
0181デフォルトの名無しさん2015/03/01(日) 14:25:44.99ID:YTVpAllV
そういうことじゃなくて・・・orz
0182デフォルトの名無しさん2015/03/01(日) 14:33:42.98ID:VYwW9Vyn
「そういうことじゃなくて・・・orz」じゃねーよ
期待した解答と違うとおもったなら自分の質問にもっと具体的な補足をしろ
できねーなら死ね
0183デフォルトの名無しさん2015/03/01(日) 14:34:32.89ID:uDqKnlJ3
private 継承 元を全て private へ
protected 継承 元publicをprotectedへ 元protectedをprivateへ
public継承 元の状態を維持


だったっけか?
0184デフォルトの名無しさん2015/03/01(日) 14:45:45.97ID:5nggEOp/
>>182
0185デフォルトの名無しさん2015/03/01(日) 15:05:46.90ID:9nAO1Mr4
privateじゃなくてprivertだからな
そんなモン誰も知らねぇよ
0186デフォルトの名無しさん2015/03/01(日) 15:11:24.18ID:NOqABy0N
protected継承は割と新機能を車輪の使い回しで実装したい時に便利
0187デフォルトの名無しさん2015/03/01(日) 18:08:53.80ID:xHJpp+wq
自分のアクセスレベル以上のものを自分のアクセスレベルにする

public そのまま
protected publicだけprotectedへ
private 全部private
0188デフォルトの名無しさん2015/03/01(日) 23:34:19.53ID:VA+mmmdG
>>183-187はコミュ障
0189デフォルトの名無しさん2015/03/01(日) 23:47:53.89ID:NUTnmFf9
protected って本来は使うべきじゃないの?
メンバ変数は基本的に全てprivateにしてsetter getterを関数に書いて
派生クラスから基底クラスのメンバ変数を呼ぶときは全てsetter getterを通じて扱うのが本来のオブジェクト指向な気がするけどどうなんだろう
0190デフォルトの名無しさん2015/03/02(月) 00:05:32.07ID:XG6Dbdai
>>189
気にしないで、ガンガンPUBLIC使うべし。
いちいち代入のために関数作ってたら、生産性わろし

関数ひとつ追加するコストは、ドキュメントやテスト、IFの構成などの影響を考えると高くつく

学者のべき論と実戦は異なるのだよ
0191デフォルトの名無しさん2015/03/02(月) 00:09:11.15ID:hseo5gVd
>>189
お前アホか
本来のオブジェクト指向()とやらでは実現できない「実装の再利用」のために
friend/private継承/protected継承があるんだよ。
オブジェクト指向の考えに形式的に当てはめようとして
getter/setterにする方がクレイジー
0192デフォルトの名無しさん2015/03/02(月) 00:22:49.89ID:3n4sVnGf
>>191
そうなのか・・・
本とか一部サイトではsetter getterを通した方が値のチェックを行えて安全とかあるから混乱してたんよ
0193デフォルトの名無しさん2015/03/02(月) 00:29:21.36ID:fPhyyxiK
>メンバ変数を呼ぶときは全てsetter getterを通じて扱う

内部の変数へのアクセスを許すのは
オブジェクト指向の考えに反します
getterを作れば良いと言うものではありません
0194デフォルトの名無しさん2015/03/02(月) 00:51:01.27ID:/crQ+lAS
内部変数ありきで、内部変数の仕様から完成して、
それにあわせてgetter作ってたらオブジェクト指向じゃない
0195デフォルトの名無しさん2015/03/02(月) 00:57:41.76ID:g6u+STTf
折角privateにしてるのにsetterされたらそれもうprivateの意味無くね
0196デフォルトの名無しさん2015/03/02(月) 01:09:06.37ID:XG6Dbdai
>>195
それは、言語仕様の矛盾だよね。

でも現場ではpublicしか使わないから関係ないけどね(制御系とか金融のプロジェクトは知らないけど)
0197デフォルトの名無しさん2015/03/02(月) 01:12:04.73ID:/eLULHxy
だからと言って変数をpublicにしたらsetterにトリガ仕込んだり出来なくなるし
0198デフォルトの名無しさん2015/03/02(月) 03:22:53.77ID:Cc4ZXjAz
アクセッサ経由でしかアクセスしない親クラスなら、
そこから派生させるのではなくそのクラスのインスタンスを
メンバとして持てば十分でしょう。
その方が良いならそうすべきで、かつそのクラスを
テンプレート引数として汎用化できないかも考慮すべき。
0199デフォルトの名無しさん2015/03/02(月) 13:58:13.91ID:u4npGgFL
なに インヘリをうだうだ考えてると禿げになりますよ。
普通にクラスを作って楽しく使いましょう。
0200デフォルトの名無しさん2015/03/03(火) 10:05:19.01ID:k6QUuUZD
>>198
なかなか貴重で異常なご意見で
0201デフォルトの名無しさん2015/03/03(火) 22:53:35.90ID:E8cNZHFY
配列は、配列名でその配列の先頭アドレスが確保出来るということですが、
なぜ配列ではない関数も同じように関数名で先頭アドレス確保出来るのでしょうか?
関数名に「&」を付けるなら分かるのですが・・・

int i[5]={1,2,3,4,5};
int* pi = i; // OK

int i=1;
int* pi = &i // &が必要

******************* こっから下が分からない *******************

void kansuu(char* str){
 std::cout << str << "\n";
}

void (*po[])(char* str)={kansuu}; // なぜ&kansuuでなくてよい?
po[0]("なぜじゃ");
0202デフォルトの名無しさん2015/03/03(火) 23:02:49.41ID:HsY4gQ31
>>201
一種の例外だし、それを好まずそう書かない人々もいる
0203デフォルトの名無しさん2015/03/03(火) 23:41:13.44ID:E8cNZHFY
>>202
&をつけてもコンパイル通るんですね。例外了解です。
0204デフォルトの名無しさん2015/03/03(火) 23:48:42.41ID:aTqVdZca
>>201
&なしは関数オブジェクトと関数が同じ表記法になれる
テンプレートの場合では&をつけるわけにはいかない

そのため付けないのが主流となる
0205デフォルトの名無しさん2015/03/04(水) 02:08:06.64ID:7qqVQ1bq
>>201
そもそも配列も関数と同じで、&をつけてもつけなくても同じ扱い。
http://ideone.com/bYtnim
0206デフォルトの名無しさん2015/03/04(水) 09:35:28.98ID:/apgWJr2
呼び出すときも funcptr() と (*funcptr)() どっちもいけるよね
0207デフォルトの名無しさん2015/03/04(水) 09:40:16.23ID:HeTEjgTn
>>206
ANSI-C以降の話しね。ポータブルCとかK&Rは駄目(豆)
0208デフォルトの名無しさん2015/03/04(水) 14:53:14.64ID:Ta/FEbLe
C暦3日目です
ここに自分が書いたソースコード張ったらダメ出しみたいなのしてもらえる?
テストの点数とそれに対応する順位をつけて、同じ点数は同じ順位にするってプログラムを組んだんですけど
一応目的の動作はしてくれます
0209デフォルトの名無しさん2015/03/04(水) 15:06:01.49ID:CTtxiq5X
>>1使って、どうぞ
0210デフォルトの名無しさん2015/03/04(水) 15:20:31.89ID:Ta/FEbLe
http://codepad.org/O06p0hW4
これだけのことに変数を使いすぎてる気がするのと
もっとスマートに書ける部分があったらおしえてほしいです
0211デフォルトの名無しさん2015/03/04(水) 15:50:29.68ID:HeTEjgTn
>>210
つ qsort
0212デフォルトの名無しさん2015/03/04(水) 16:57:59.31ID:mnA608p+
>>210
直してみたよ
http://codepad.org/vCg6eNwh

解説
・変数名はc0など意味の分かりにくいものにせず、pointとかorderとかにしよう(↑では変えてないけど)
・10や9や8といった定数は、配列の要素を後で増減させる時に修正しやすいよう、変数などに定義しよう
その際は、要素数(人数)に合わせて'10'を使うのがいい
基本的に、配列をfor文で辿る時は (変数=0; 変数 < 要素数; ++変数) という形になるのでこのまま憶えよう
本当は配列のサイズからも分かるけど、それはもうちょっと先のレベル
・同じ点数の人が同じ順位になるよう、順位を示す変数は途中では変えず、後でまとめて人数分増やす
そうすれば後半のややこしいループは不要
・main関数の引数と戻り値が間違い
0213デフォルトの名無しさん2015/03/04(水) 19:46:11.27ID:Ta/FEbLe
>>211
便利ですね覚えておきます

>>212
ありがとうございます、すごい参考になります
引数と戻り値は勉強しなおしておきます
0214デフォルトの名無しさん2015/03/05(木) 03:01:06.15ID:o2c8GLXQ
size_t (実体はunsigned int)からunsigned longへの変換でpossible loss of dataって言われたんだけど
intよりもlongのが扱える範囲は大きいはずだからおかしいよな・・・?
0215デフォルトの名無しさん2015/03/05(木) 03:25:16.98ID:+ThMXw+2
それだけじゃなんとも
size_tが_int64にでもなってたんじゃね
0216デフォルトの名無しさん2015/03/05(木) 03:34:33.64ID:lVmgOndi
今時 size_t が unsigned int と同サイズって少数派だもんな
0217デフォルトの名無しさん2015/03/05(木) 03:35:29.33ID:o2c8GLXQ
ホントだ
インテリセンス君はunsigned intだったけどたどっていってみたら__w64なる接頭句が
0218デフォルトの名無しさん2015/03/05(木) 03:46:27.62ID:lVmgOndi
たいていの x86_64 や arm64 のコンパイラは
LLP64 っていって、long long とポインタが64bit
そのあおりで size_t と ptrdiff_t (ポインタの差) も64bit

64bit CPU の先駆け Alpha AXP の頃は LP64 といって
long とポインタを 64bit にしてたけど、その時の経験で
long は 32bit のままの方が 64bit 化にあたってのコードの
修正が少なくて済むとわかってLLP64 が主流になった
0219デフォルトの名無しさん2015/03/05(木) 03:47:28.28ID:9F0iYt50
>>210
作業用ポインタとqsortを使った方法、こんな方法もあるよとだけ
http://codepad.org/FjFQ2dNL
0220デフォルトの名無しさん2015/03/05(木) 08:51:27.87ID:OANpNxqp
>>218
こう言うウソをしれっとつくバカは死んだ方が良い。
win16からの移行を容易にする為にすでにグダグダになっていたwin32
それからの移行を容易にするための選択がLLP64
0221デフォルトの名無しさん2015/03/05(木) 08:52:56.70ID:+Q5gJwG8
>>220
同じことを言ってる
0222デフォルトの名無しさん2015/03/05(木) 09:06:17.01ID:PF6nrNXa
64bit環境におけるデータモデルの話じゃなかったのか
0223デフォルトの名無しさん2015/03/05(木) 09:25:50.71ID:OANpNxqp
>>221
MS帝国(大分おちめ)の奴隷は引っ込んでいろ。
LLP64なんか採用してるのはwin64だけ。
0224デフォルトの名無しさん2015/03/05(木) 13:04:15.43ID:HSYDbrXJ
確かに218は不正確で220が正しい
64ビットの先駆けとなったDEC Alpha系もLP64だったような
0225デフォルトの名無しさん2015/03/05(木) 13:22:27.44ID:3j9lgICf
>>218
> たいていの x86_64 や arm64 のコンパイラは
> LLP64 っていって、

いやいや、そんな珍しいものは唯一windowsだけじゃないの?
0226デフォルトの名無しさん2015/03/05(木) 16:44:14.07ID:JyN3EgEg
//#define AAAA
//#define AAAA BBBB
#define AAAA CCCC

と記述した後に、任意の場所で、
AAAAがCCCCとしてdefineされているかを判定することはできないでしょうか?
0227デフォルトの名無しさん2015/03/05(木) 17:17:46.08ID:I89WrdEH
if (AAAA==BBBB) {
  return true;
}
0228デフォルトの名無しさん2015/03/05(木) 17:25:22.76ID:0g2YeNLY
値との比較で

#if(WINVER >= 0x0500)
#endif

こういうのは見たことがあるが、特定のシンボルに定義されているかどうかを
#if で判定してるのは、見たことがないな(&それが可能なのかは知らないな)
0229デフォルトの名無しさん2015/03/05(木) 20:57:00.72ID:l9SFIH0J
フォルダー(a)に複数入っている各csvファイルの行数を調べて表示するやり方を教えてください
0230デフォルトの名無しさん2015/03/05(木) 22:21:47.81ID:HeQ72Txg
>>229
スレチ
0231デフォルトの名無しさん2015/03/05(木) 22:26:38.06ID:/PZ+wdBr
質問のどのあたりがスレチだったのかkwsk
0232デフォルトの名無しさん2015/03/05(木) 22:37:42.95ID:4qwAFJaB
>>229
10 OPEN DIR("*.csv") AS #1
20 sizeof(#1)
30 GOTO 10
40 END
0233デフォルトの名無しさん2015/03/05(木) 23:13:15.75ID:LULabTRs
>>229
find . -name "*.csv" | wc -l
0234デフォルトの名無しさん2015/03/05(木) 23:21:23.33ID:puWRUP/J
>>229
$ find ./a -name "*.csv" | ruby -rcsv -lne 'p [CSV.read($_).size, $_]'

>>233
xargs
0235デフォルトの名無しさん2015/03/06(金) 01:14:22.96ID:Sg/+JleU
fopen(csv);

int i = 0;
while ( fgets( ) ){

  i++;

}

fclose();

return i ;
0236デフォルトの名無しさん2015/03/06(金) 03:51:20.50ID:+A6TrZmo
>>233,234
find a -name '*.csv' -exec wc -l {} \;
0237デフォルトの名無しさん2015/03/06(金) 05:54:19.35ID:ffY3VuPR
CSVと指定してるのが引っ掛けだったりして
ダブルクオートの中に改行が入る場合を考慮しないといけない
0238デフォルトの名無しさん2015/03/06(金) 07:24:52.70ID:GC5TMZRE
Excel仕様だと、( , )( " )( 改行 )等があると全体を( " )で括り、さらに( " )は( "" )とエスケープするという素敵仕様
0239デフォルトの名無しさん2015/03/06(金) 07:43:06.27ID:jAQDMMU6
そういう改行だとか , " への対応だと、
C#でTextFieldParserを使うのが一番簡単かな?
0240デフォルトの名無しさん2015/03/06(金) 08:06:38.46ID:dsDP5DeS
>>236
今は
find a -name '*.csv' -exec wc -l {} +
って、やるんだよ。
20世紀からきたおじいちゃん。
0241デフォルトの名無しさん2015/03/06(金) 08:34:58.66ID:zfR7oXUX
>>238
Excel仕様というか、今はそれでRFCになってるけどな。
0242デフォルトの名無しさん2015/03/06(金) 09:28:41.05ID:uUtd6mTH
csvデータ の行数なのか
(csv) ファイルの行数なのか
そもそも行数とは何か
難しい
0243デフォルトの名無しさん2015/03/06(金) 09:33:08.83ID:liXUjwAw
ファイルの行数=ファイル数と空目した。すまそ
0244デフォルトの名無しさん2015/03/06(金) 12:08:08.56ID:DihBiSVk
拡張子が.csvとは言ってないんだよなあ
02455602015/03/06(金) 21:01:06.91ID:n9/U+gAr
>>244
そこまで応用力のない奴は放置でいいだろ
腐ってもム坂だし
0246デフォルトの名無しさん2015/03/06(金) 21:02:18.67ID:FTmThQC8
データに改行がある時正しくないね
0247デフォルトの名無しさん2015/03/06(金) 22:15:46.04ID:CKRqkh4t
csvとテキストって区別つくんか?
02485602015/03/06(金) 23:29:41.77ID:rW0fbm/s
>>246
正しいかどうかは >>229 の行数の定義に依る

>>247
csv ⊆ テキスト
0249デフォルトの名無しさん2015/03/06(金) 23:53:29.97ID:2n7TyHez
エクセル起動してcsv読み込ませて行数だけ返してもらえばいいんじゃないですかね(名案
0250デフォルトの名無しさん2015/03/07(土) 00:35:11.21ID:Ya/TYd9L
FILE fp = fopen( csvファイル );

int c;

int i=0,行数=0;

while ( c = fgetc(fp) ){

  if( c == 区切り文字 ){

     i++;

    if(i >= 項目数){

      行数 ++ ;
      i=0;
     }

  }

}

fclose(fp);

return 行数 ;
0251デフォルトの名無しさん2015/03/07(土) 01:24:24.47ID:C8DOhXGu
セル内改行してたら、1レコードで二行使ってたりするんだぜ
0252デフォルトの名無しさん2015/03/07(土) 15:20:31.76ID:bUPPfM5U
それcsvじゃないだろ
0253デフォルトの名無しさん2015/03/07(土) 15:30:48.23ID:DS4Omjl7
まぁ改行とかカンマとか入っているとダブルクォートで区切り出すからDouble quotes Separated Valuesが正しいな。
0254デフォルトの名無しさん2015/03/07(土) 16:04:20.33ID:3KyZhNX/
なまじ簡単そうに見えるだけに、csvとiniは勝手な解釈で読み書きされがちだな。
0255デフォルトの名無しさん2015/03/07(土) 16:12:54.82ID:6NNVM+G0
csvを読み込んで、リスト化して始めて行になる。
つまりCSVには行と言う概念は無いのよ!
0256デフォルトの名無しさん2015/03/07(土) 16:20:55.36ID:6NNVM+G0
取り出し方によって行数は変わるって事だ!

CSVからレコードとしての行数を取得すると言う事は、
どのような形でレコードの行をカウントするかが分からない限り不可能なのだよ!
0257デフォルトの名無しさん2015/03/07(土) 19:56:03.68ID:DS4Omjl7
CSV書き出させる時、Cells(1,1) = UsedRange.Rows.Countを義務化させれば解決。
0258デフォルトの名無しさん2015/03/07(土) 20:57:57.71ID:/8n+l7ta
Hitoというクラスがあったとすると、
Hit *hito = new Hito();
Hito hito = Hito();
この2つの違いは何でしょうか・・・
それぞれのメリットとデメリットを教えてください。
0259デフォルトの名無しさん2015/03/07(土) 21:10:16.68ID:KPQIfj0o
Cから勉強しなおしてください
0260デフォルトの名無しさん2015/03/07(土) 21:27:31.82ID:YzMdMFPo
Hit型とはどこからでてきたのか
0261デフォルトの名無しさん2015/03/07(土) 22:26:53.41ID:SCrS5T9D
>>258
> Hit *hito = new Hito();
動的ストレージ期間のオブジェクトの構築
メリット:オブジェクトの寿命をプログラマが自由に決められる
デメリット:プログラマがオブジェクトの寿命を管理しなければならない

> Hito hito = Hito();
動的ストレージ期間ではないオブジェクトの構築
メリット:コンパイラ(が自動的に生成するコード)がオブジェクトの寿命を管理してくれる
デメリット:プログラマによるオブジェクトの寿命の管理に制限がある
0262デフォルトの名無しさん2015/03/07(土) 22:46:24.14ID:P6TY9Oz7
javaじゃないんすかw
0263デフォルトの名無しさん2015/03/07(土) 23:09:27.83ID:/8n+l7ta
>>261
よくわかりました
ありがとうございます!
0264デフォルトの名無しさん2015/03/07(土) 23:37:49.78ID:tOCksCGu
真に受けちゃいけない
0265デフォルトの名無しさん2015/03/07(土) 23:47:58.97ID:qYUMbMQB
Hito hito = Hito();
あほ。
Hito hito();
でOK
0266デフォルトの名無しさん2015/03/07(土) 23:58:35.67ID:G+WKs/Oo
えー、C++標準化委員会の議長が
auto hito = Hito{}; を絶賛推奨してるのにー
0267デフォルトの名無しさん2015/03/08(日) 00:21:20.29ID:4W2b4/5m
> Hito hito();
> でOK
これこそ完全にあほ
これは関数宣言
0268デフォルトの名無しさん2015/03/08(日) 01:22:10.89ID:j2+5iace
釣る意味は何だろう
0269デフォルトの名無しさん2015/03/08(日) 03:31:42.13ID:F1sIV67x
簡単にだまされてしまうなぁ
0270デフォルトの名無しさん2015/03/08(日) 03:42:47.34ID:OqeeKAyU
>>265 >>267
http://ideone.com/xgK8XD
なんかごっちゃになってるな‥<私
0271デフォルトの名無しさん2015/03/08(日) 06:17:02.51ID:QtrJmWMv
アホと言うより言語仕様がクソとしか言いようがない

引数無し。ゼロ初期化しなくてもいいとき
 Hito hito;
 new Hito;
デフォルト初期化したい時
 Hito hito(); // × 関数宣言
 Hito hito{};
 new Hito();
 new Hito{};
要素数ゼロでinitilizer_list初期化したい時
 Hito hito{ {} };
 new Hito{ {} };
引数あり。initilizer_list初期化したくない時
 Hito hito(4);
 new Hito(4);
引数あり。initilizer_list初期化してもいい時
 Hito hito{4};
 Hito hito{ {4} }; // 警告
 new Hito{4};
0272デフォルトの名無しさん2015/03/08(日) 13:27:11.80ID:a8B+x8Xu
インスタンスを保持したい時にはnewを付けて生成してポインタを渡す。

そうじゃない時は普通に宣言し、インスタンスの処理は呼び出し側に任される。
0273デフォルトの名無しさん2015/03/08(日) 22:46:55.60ID:rkbbmsnn
templateクラスをfriend扱いしたいときはどうすればいいのですか?
0274デフォルトの名無しさん2015/03/08(日) 22:56:08.21ID:g6H7cIw4
無理
0275デフォルトの名無しさん2015/03/08(日) 23:02:51.77ID:rkbbmsnn
できました
0276デフォルトの名無しさん2015/03/10(火) 13:38:20.15ID:RdbtE7KX
VC++のウインドウプログラムの中でボタンを押したらインターネットエクスプローラーが開いて
指定したURLを開きたいのですが、ググルといろんなやり方があるようですが、どれでやっても
同じですか?もしそれぞれの方法で何か違いがあるなら教えて下さい。
0277デフォルトの名無しさん2015/03/10(火) 13:48:50.66ID:PYIcYA91
shellexecuteでおk
0278デフォルトの名無しさん2015/03/10(火) 13:59:09.73ID:RdbtE7KX
>>277
レス有難うございます。
有名な秀丸だと更新確認実行するとwscript.exeがインターネット接続します
って出るんですが、秀丸さんがwscript.exe使っているのは何か特別な理由があるのかな?と思いました。
0279デフォルトの名無しさん2015/03/10(火) 14:25:52.25ID:vm3oZo24
>>278
更新する場合自身のプロセスが起動してると失敗するから
0280デフォルトの名無しさん2015/03/10(火) 15:17:45.02ID:RdbtE7KX
>>279
自身のプロセスを更新する場合、
shellexecuteでは出来ないんですか?
0281デフォルトの名無しさん2015/03/10(火) 15:36:45.92ID:vm3oZo24
>>280
実行中プロセスを削除しようとしてみて
0282デフォルトの名無しさん2015/03/10(火) 22:43:07.05ID:tO3u6w4M
ビットフィールドって何型?
int a : 3;
はint型なのかint:3型なのか
0283デフォルトの名無しさん2015/03/11(水) 09:34:07.82ID:aCIUJ7gk
>>282
ビットフィールドはビットフィールドというのが回答だろう
あくまでビット数指定のメンバを指定するものだから
0284デフォルトの名無しさん2015/03/11(水) 10:26:02.11ID:qUaLI3RQ
typeidで見えるだろう
0285デフォルトの名無しさん2015/03/11(水) 21:37:27.55ID:y8CEkPPH
型の確認にtypeidを使う奴は素人
0286デフォルトの名無しさん2015/03/11(水) 23:49:47.62ID:cDpj+qM3
型はintだな
typeidがcharになるコンパイラもあるようだけれど
0287デフォルトの名無しさん2015/03/12(木) 07:30:09.24ID:OMcwIhNo
g++のバグ
0288デフォルトの名無しさん2015/03/13(金) 19:13:51.16ID:5npxB6t0
Visual Studio 2012を使っています。
スタティックライブラリを作成する設定にしてできたlibファイルを
バイナリエディタで開くと、ソースファイルのパスの文字列を確認することができます。
この文字列を削除したいのですが可能でしょうか?
デバッグ情報を生成しないようにしても付加されてしまうようです。
0289デフォルトの名無しさん2015/03/14(土) 20:11:39.30ID:V/kJuq3g
2ちゃんねるおわた
NEXT行きましょ
NEXT
0290デフォルトの名無しさん2015/03/14(土) 22:16:00.15ID:Se8NRYYo
nextに片山いてワラタ
0291デフォルトの名無しさん2015/03/16(月) 10:45:52.19ID:+/0omNd3
関数の引数で
void func1(char **p)
void func2(char *&p)
のどっちの形式を使うかは、好みの問題ですか?
0292デフォルトの名無しさん2015/03/16(月) 15:47:30.14ID:ErhRBgzc
くだらない質問ですみません。

classのメンバとしてvectorは使えないのでしょうか?

例えば
class cLoadText
{
private:
//色々

vector <int> PI(3);
};
こんなかんじでやると「型指定子が必要です」と出てしまいます。

ちなみにグローバルで定義すれば普通に使えます。
0293デフォルトの名無しさん2015/03/16(月) 15:55:51.17ID:TX0+G/oC
class cLoadText
{
public:
cLoadText() : PI(3) {}
private:
//色々

vector <int> PI;
};
0294デフォルトの名無しさん2015/03/16(月) 16:00:20.96ID:ErhRBgzc
>>293
ありがとう御座います!!
ここ数日間の悩みが吹っ飛びました!!
0295デフォルトの名無しさん2015/03/16(月) 22:41:17.24ID:BYGyc2yU
>>291
plain Cでは参照が使えない
0296デフォルトの名無しさん2015/03/17(火) 00:05:46.48ID:T++49l0a
ふと思ったんだけど
ここで質問に答えている人はどこでその知識や技術を手に入れてるの?
0297デフォルトの名無しさん2015/03/17(火) 00:21:44.73ID:qNYikdDN
俺は質問を見てからググったり検証して答えてる、教えてるようで教わってる感じ
0298デフォルトの名無しさん2015/03/17(火) 00:41:41.24ID:dRjYd+3d
>>296
定番の参考書と仕様書を読み基礎知識を身につける
後はその基礎知識をもとに考えれば分かるから新たに知識を集める必要はない
その辺の技術者が考えても分からんような技術はこのスレではまず扱わないから考えなくて良い
0299デフォルトの名無しさん2015/03/17(火) 22:28:51.21ID:5z2zSXt/
>>292ですが、
class cLoadText
{
public:
cLoadText() : PI(3) {}
void Setting();
private:
//色々

vector <int> PI;
};

void cLoadText::Stting()
{
PI.resize(5);
}

このようにresizeすることが出来ません。
「配列は初期化子リストでのみ初期化できます」と出てしまいます。

何度も質問してしまいすみません。
0300デフォルトの名無しさん2015/03/17(火) 22:37:08.80ID:OqObOA9c
×Stting
○Setting
0301デフォルトの名無しさん2015/03/17(火) 22:47:22.87ID:T++49l0a
>>297
なんとなくわかるなぁ

>>298
それが出来るのはすごい
0302デフォルトの名無しさん2015/03/17(火) 23:42:15.16ID:5z2zSXt/
>>300
確かに間違ってました。

でもまだ上手く出来ません
0303デフォルトの名無しさん2015/03/18(水) 00:05:15.53ID:24dY5kJQ
そのvector<>はc++規格通りのstdのvectorなのか?
0304デフォルトの名無しさん2015/03/18(水) 00:56:57.87ID:3JLfZ6La
>>303
そうだと思います。
void main()
{
int a = 1;
vector<int> abc;
abc.resize(a,0);
//色々
}
このようにclass以外の場所なら普通に出来るので
0305デフォルトの名無しさん2015/03/18(水) 10:28:26.60ID:b1qBgKlJ
型名が設定されていない場合どうやったらnewで確保できますか?
言い換えるとmalloc(10 * 5);を
newに書き換えた場合どうするのがセオリーですか?
new BYTE[10 * 5]ですか?
0306デフォルトの名無しさん2015/03/18(水) 19:32:02.17ID:DpmcYHF9
class a {

 publc:

  struct st{
   ・・・
  }:

}

のstをstaticにして、aがnewされて無い時でも、
使えるようにするにはどうしたら良いのでしょうか。
0307デフォルトの名無しさん2015/03/18(水) 19:38:40.21ID:mHp9M5nm
class a {
 publc:

  struct st{
   ・・・
  }:
  
  static st b;
};

a::b.なんとかかんとか
0308デフォルトの名無しさん2015/03/18(水) 20:06:11.09ID:DpmcYHF9
外部シンボル a::b が未解決って出てエラーになります
0309デフォルトの名無しさん2015/03/18(水) 20:09:55.95ID:E+Ido+dl
定義をどっかに書けよ
0310デフォルトの名無しさん2015/03/18(水) 20:42:27.32ID:9IH8xo4h
vectorなどを使うとvect.size()がsize_tつまりunsigned long(32bit)や
unsigned long long(64bit)じゃないですか。
そうすると、
for(int i=0; i<vect.size();i++)
みたいな行で必ず警告出ますよね(VS2013C++)。
for(size_t i=0; i<vect.size();i++)
ってやると警告無くなりますが、
i--のループの場合などややこしいのでint iでやりたいんですよね。
なので、私のプログラムでは、(int)vect.size()みたいなキャストが
至る所にあるんですけれど、上級者の人はどういうふうに書くんでしょうか?
0311デフォルトの名無しさん2015/03/18(水) 20:45:17.04ID:E+Ido+dl
range based forでおk
0312デフォルトの名無しさん2015/03/18(水) 20:47:31.34ID:9hZ5ipnL
>>310
イテレータを使う
0313デフォルトの名無しさん2015/03/18(水) 20:56:47.69ID:9IH8xo4h
さっそくのレスありがとうございました。
上級者の人は、for(int i=0; みたいな昔ながらの構文は殆ど使わずに、
range based forみたいなやり方をされるんでしょうか?
その時例えばループ内でindexが必要になったらどうするんですか?
i++みたいな変数を用意しておくんでしょうか?
0314デフォルトの名無しさん2015/03/18(水) 21:03:51.11ID:thzHuobJ
そんな警告は無視していいだろ。抑止可能。
アンサインドだしintで警告出るのは当然だが。
0315デフォルトの名無しさん2015/03/18(水) 21:04:10.81ID:6vqFZ2Fz
うおお、全然わからなかったバグがコンパイラ変えたら警告で原因教えてくれたw(GCC→VC)
初めて警告ありがたいと思ったわw
ぜったいコンパイラのバグだと思ってたw
0316デフォルトの名無しさん2015/03/18(水) 21:11:33.96ID:ga5a3ZRD
コンパイラじゃなくてコンパイルオプションを変えればいいんじゃないかな?(´・ω・`)
0317デフォルトの名無しさん2015/03/18(水) 21:24:41.82ID:6vqFZ2Fz
警告なんて普段ガン無視だったからね(´・ω・`)
コンパイルオプション変えようなんて発想はなかったね(´・ω・`)
0318デフォルトの名無しさん2015/03/18(水) 21:28:02.63ID:E+Ido+dl
そもそも無視すんなよ
問題あるから警告してるんだろうが
0319デフォルトの名無しさん2015/03/18(水) 21:42:26.74ID:6vqFZ2Fz
いや、GCCデフォルトオプションじゃ警告出してくれなかったの。(´・ω・`)
VCはデフォで警告してくれた(´・ω・`)
0320片山博文MZ ◆T6xkBnTXz7B0 2015/03/18(水) 22:10:08.00ID:ONjzG27k
gcc -pedantic -Wall
0321デフォルトの名無しさん2015/03/18(水) 22:26:21.21ID:6vqFZ2Fz
>>320
肝に銘じとくよ(>△<)
0322デフォルトの名無しさん2015/03/18(水) 23:04:50.29ID:KiMx4fSv
いちばんきつめに
gcc -W -Wall -ansi -pedantic
がいいいのでわ
0323デフォルトの名無しさん2015/03/19(木) 07:22:23.53ID:FyROe61Z
>>314
そもそもアンサインドなんていう変数の必要性が分らない。
そんなものがあるから混乱の元だと思う。数字なんだから正負を扱える
サインドな変数だけで十分だと思う。vect.size()などもint型あるいはlong型
のほうが扱いやすいと思う。皆さんそう思いませんか?
0324デフォルトの名無しさん2015/03/19(木) 07:38:15.80ID:YFRVnvTE
>>323
1byteが0〜255じゃなくなるがよろしいか
0325デフォルトの名無しさん2015/03/19(木) 07:41:48.28ID:FyROe61Z
>>324
バイトを扱うデータは、逆に、例外的にunsigned charのみにすればいい。
0326デフォルトの名無しさん2015/03/19(木) 07:45:00.69ID:I9aM4Cw3
>>325
お前が作ればいいだけのこと
0327デフォルトの名無しさん2015/03/19(木) 07:49:02.36ID:YFRVnvTE
>>325
サイズを扱うデータはryとも書き換えられるんだが
サイズがマイナスになるのもおかしいし
0328デフォルトの名無しさん2015/03/19(木) 07:49:07.00ID:zgYNpxtE
俺は混乱してないが

そういえばJavaにはunsignedが無いらしい
他言語経験者、他言語からの移植が難しい言語だよな
0329デフォルトの名無しさん2015/03/19(木) 07:53:35.47ID:FyROe61Z
>>328
>Javaにはunsignedが無いらしい
本当か!さすがJava
0330デフォルトの名無しさん2015/03/19(木) 08:10:26.63ID:I9aM4Cw3
>>328
移植はともかく他言語経験者が戸惑うことなんてほとんどないだろ
メジャーな高級言語で符号なしがあるのは、C/C++/C# ぐらいだし
0331デフォルトの名無しさん2015/03/19(木) 08:14:47.47ID:FyROe61Z
>>327
>サイズがマイナスになるのもおかしいし
そうだとしても、size()をunsignedにする必要性がないだろ。signedで
値を返せよ。誰だよsize()をunsigned何かにした奴は。俺が言語とは何か
を10時間くらい説教してやってもいい。
0332デフォルトの名無しさん2015/03/19(木) 08:15:11.74ID:SI87WM3g
少ないビット、バイトで大きな数を扱いたいからだろ。
メモリに制約がないんだったら常にマイナスがあって良い。
0333デフォルトの名無しさん2015/03/19(木) 08:18:04.06ID:SI87WM3g
一バイトを例にすれば、size、lengthが127と255では大きな違い。
これは4バイトでも扱える数が半分になるのは同様。
0334デフォルトの名無しさん2015/03/19(木) 08:22:43.51ID:yurDzz1T
>>330
> メジャーな高級言語で符号なしがあるのは、C/C++/C# ぐらいだし
ほんまかいやw
0335デフォルトの名無しさん2015/03/19(木) 08:30:25.50ID:I9aM4Cw3
ああ、Pascal には Cardinal があったな
0336デフォルトの名無しさん2015/03/19(木) 09:27:58.05ID:yurDzz1T
あなたの中の"メジャーな高級言語"の定義をを明記して○×つけてよ
0337デフォルトの名無しさん2015/03/19(木) 11:01:08.61ID:4EbM+e6S
符号有りと符号無しを比較すると、何かおかしくなる事は有った。
0338デフォルトの名無しさん2015/03/19(木) 11:22:15.74ID:ijLHMGuv
FORTRANは95からあるな UNSIGNED
0339デフォルトの名無しさん2015/03/19(木) 11:26:04.89ID:ByTclLqz
アセンブラ自体に符号有り無しの命令があるから
しょうがないね
0340デフォルトの名無しさん2015/03/19(木) 13:03:22.01ID:7fppMTQb
C++の参考書を探しています

いままでC言語で仕事をしていて、興味はあったのでC++の入門サイトのようなものはなんども見たことがあるというようなレベルです
なので、クラスとは、とか演算子オーバーロードとは、といった入門書ではなく、C++で実践的にプログラムを書く上での設計方法などが書いてあるような書籍を読みたいと思っています。

C++はマルチパラダイムなのでどのように書いたらいいのかがわからず、収拾がつかなくなってしまいそうだったので、一度勉強し直そうと思った次第です。

C++をやるなら読んでおけ、といった定番書など、おすすめがあれば教えていただけないでしょうか
0341デフォルトの名無しさん2015/03/19(木) 19:21:44.02ID:4EbM+e6S
>>340
http://peace.2ch.net/test/read.cgi/tech/1425092139/
0342デフォルトの名無しさん2015/03/20(金) 22:03:15.41ID:zGfmcxU+
ロベールのC++入門講座一択だね。
http://ecx.images-amazon.com/images/I/51YnWlvjCbL.jpg
0343デフォルトの名無しさん2015/03/20(金) 23:11:49.99ID:KkcL1RkA
C++勉強中です

operatorで
変換関数や変換演算子は
カスタマイズできると解釈

しかし
自分でプログラミングして
自分で読むなら良いかもしれませんが

第三者が検証する場合
超迷惑ではないですか?
0344デフォルトの名無しさん2015/03/20(金) 23:16:24.95ID:OrmcR1Cy
その通りです
型変換はオペレータではなく自作のテンプレート関数を使うのが基本です
型変換だけでなく演算子は代入以外はオーバーロードしてはいけません
これはよいマナーです
0345デフォルトの名無しさん2015/03/20(金) 23:26:27.23ID:KkcL1RkA
ありがとう
0346デフォルトの名無しさん2015/03/22(日) 13:13:33.97ID:MxnNmn3I
vectorってループしている最中に、その要素を追加したり
削除したり出来ますか?
0347デフォルトの名無しさん2015/03/22(日) 13:29:37.62ID:CvAUvH6J
イテレータを使用している場合には保証いたしかねます
0348デフォルトの名無しさん2015/03/22(日) 13:34:58.88ID:MxnNmn3I
>>347
イテレータでなくても良いので、追加・削除する方法教えて下さい。
0349デフォルトの名無しさん2015/03/22(日) 14:30:15.67ID:3VgWqhg1
push_back erase
0350デフォルトの名無しさん2015/03/23(月) 19:52:36.73ID:x44pk4qe
ループの最中に追加削除しても問題ないだろ。
ループで使ってるイテレータは無効になるかもだが。
0351デフォルトの名無しさん2015/03/23(月) 20:10:24.34ID:iTA2cPA1
インデックスでアクセス
erase(begin()+i)
0352デフォルトの名無しさん2015/03/23(月) 20:59:29.69ID:RnMSimPV
>>350
「かもだが」は戸田奈津子しか使わない言葉かと思ってた
0353デフォルトの名無しさん2015/03/24(火) 15:41:47.42ID:EgIv9KoM
Visual C++6.0 MFCについてで、調べたけど専用スレがなさそうなのでここに質問します
普通のMFC AppWizardで作成したSDIのドキュメントビューなのですが、実行してファイルをオープンした際
そのファイルがショートカットファイルだった場合、カレントディレクトリがファイルをオープンしたディレクトリではなく
リンクしたファイルの元ファイルのディレクトリになってしまいます
そうではなくオープンしたフォルダーのディレクトリ(つまりショートカットファイルがあるところ)をゲットしたいのですが
どうしたらいいのでしょうか
0354デフォルトの名無しさん2015/03/24(火) 17:19:25.56ID:c5zMSx2h
GetModuleFileName
0355デフォルトの名無しさん2015/03/24(火) 17:22:36.77ID:EgIv9KoM
それは実行EXEファイルの場所ではないですか?
そうではなく、ファイルオープンダイアログで開いて選択した場所を得たいのです
そのファイルがlnk拡張子のときが問題なのです
0356デフォルトの名無しさん2015/03/24(火) 17:49:02.33ID:3G6z58Hr
>355
Win32API質問箱 Build11
ttp://peace.2ch.net/test/read.cgi/tech/1418181169/
こっちでやったほうがいいと思う。
OpenFileDialogにOFN_NODEREFERENCELINKSフラグつけて IShellLinkでリンク先見つけるとかかな。
ttps://msdn.microsoft.com/en-us/library/windows/desktop/bb776891%28v=vs.85%29.aspx
0357デフォルトの名無しさん2015/03/24(火) 17:58:10.22ID:gaKdTqU6
OPENFILENAME構造体
0358デフォルトの名無しさん2015/03/24(火) 18:33:51.66ID:EgIv9KoM
>>356
おお、出来ました。ああ、APIのスレもあったのですね。ありがとうございます。今度はそちらで質問しますね
とりあえず、結果だけ書くと、xxDoc.cppにOnFileOpen()をClassWizardで作ってその中で
CFileDialog d( TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT | OFN_NODEREFERENCELINKS, NULL, NULL );
CString newName;
if( d.DoModal() == IDOK )
{
  newName = d.GetPathName();
}
AfxGetApp()->OpenDocumentFile(newName);
としました。リンク先を見つける関数は持っていますので大丈夫ですw
オープンしたディレクトリにあるリンクファイルのリストを取りたかったのです
0359デフォルトの名無しさん2015/03/24(火) 18:34:48.29ID:EgIv9KoM
>>356-357 でした。ありがとうございました
0360デフォルトの名無しさん2015/03/24(火) 19:02:34.49ID:EgIv9KoM
追加
最後のAfxGetApp()->OpenDocumentFile(newName);はいりませんでした。これをつけると、ショートカットのオリジナルに
置き換えられてしまいました
0361デフォルトの名無しさん2015/03/26(木) 13:22:44.44ID:VFh60g5M
unsigned char の数字(00〜FF)で、例えば AB を
"AB" という文字列にしたいのですが、良い方法教えてください。
0362デフォルトの名無しさん2015/03/26(木) 13:34:29.27ID:iGJalkdz
>>361
sprintf(buff, "%x", c);
0363デフォルトの名無しさん2015/03/26(木) 13:57:41.68ID:VFh60g5M
>>362
有難うございました。うまく行きました。
0364デフォルトの名無しさん2015/03/26(木) 14:16:57.23ID:VFh60g5M
すみません。
逆に
0xAB を "AB" にする方法も教えてください。
0365デフォルトの名無しさん2015/03/26(木) 14:17:51.91ID:VFh60g5M
間違えました。
"AB"を 0xAB にする方法です。
0366デフォルトの名無しさん2015/03/26(木) 14:26:44.45ID:5RDFY36F
sscanf("AB", "%x", c);
0367デフォルトの名無しさん2015/03/26(木) 14:27:20.92ID:5RDFY36F
失礼
sscanf("AB", "%x", &c);
0368デフォルトの名無しさん2015/03/26(木) 14:35:33.37ID:iGJalkdz
>>365
unsigned int u;
sscanf(buff, "%x", &u);
c = u;
0369デフォルトの名無しさん2015/03/26(木) 14:35:43.08ID:yAHhbTvv
strtolでもできるよ
0370デフォルトの名無しさん2015/03/26(木) 14:44:02.93ID:VFh60g5M
皆さん有難うございました。
sscanfは苦手なのでstrtolというので
やったらうまく出来ました。
0371デフォルトの名無しさん2015/04/01(水) 07:05:09.15ID:mF7dj2uB
おはようございます、そして愚問を問いかけさせてください。

C++11でポインタ変数に代入する際、あるいは宣言時に初期化する際に、
  v.elem = new double[size]{};
のように書くのは環境依存な書式でしょうか?
{}並びの初期化自体は標準なことは知っていますが、ふと、
ポインタ変数に代入するためのメモリ確保先についても同様な初期化が出来ないかな、
と思ってやってみましたらちゃんと動いてくれたのですが、プログラミングC++には載って無さそうなので自信がなく。

あ、いま現在は3月発売されたプログラミングC++を読みながら勉強している段階です(それも序章です)。
0372デフォルトの名無しさん2015/04/01(水) 07:07:05.52ID:Syl8uMAd
いいえ
0373デフォルトの名無しさん2015/04/02(木) 20:14:37.66ID:7L9aZ1aB
質問ですが

char* a = "Hello";
char** b = &a;
これは問題ないのですが

char a[ ] = "Hello";
char** b = &a;
にするとエラーが表示されてしまいます
「'char(*)[6] から 'char**' に変換できません」

char* a と char a[ ] は同じ事ですよね?
エラーは何故ですか?
0374デフォルトの名無しさん2015/04/02(木) 20:23:18.84ID:o/jSuq+z
>>373
gccだとエラーにならないんだが。
コンパイラは何使ってる?
0375デフォルトの名無しさん2015/04/02(木) 20:48:14.07ID:I6N+g04C
キャストしろ
0376デフォルトの名無しさん2015/04/02(木) 21:24:26.66ID:7L9aZ1aB
使っているのは
Visual C++ express2010 です
0377デフォルトの名無しさん2015/04/02(木) 21:51:30.14ID:/D/mA8hn
>>373
いつものようにクソコテつけろよ
0378デフォルトの名無しさん2015/04/02(木) 22:04:46.55ID:ppgBhtYU
>>373
char (*b)[sizeof(a)] = &amp;a;と書けといっている。C++でchar **で受けるにはキャストが必要。


>>374
エラーメッセージの意味が分かない初心者は無理して答えようとするな。g++ならエラーになる。
後10年ROMってろ。
0379デフォルトの名無しさん2015/04/03(金) 06:49:25.60ID:5yLYNr/e
>>373
>>char* a と char a[ ] は同じ事ですよね?
CでもC++でも同じじゃない。
0380デフォルトの名無しさん2015/04/03(金) 15:31:48.07ID:meEowfeo
sizeofの値とか見れば違いがわかるんじゃね。
0381デフォルトの名無しさん2015/04/03(金) 18:47:46.29ID:IhAjgxOm
これとか
int main(void) {
char* a = "abc";
char b[] = "abc";
a = (char*)0;
b = (char*)0;
return 0;
}
これとか
int main(void) {
char* a = "abc";
char b[] = "abc";
a[0] = 0;
b[0] = 0;
return 0;
} 👀
Rock54: Warning(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
03823732015/04/03(金) 19:55:36.03ID:xlrx6Tuo
皆さんどうもありがとうございます

エラーの出る方はcastを使って型変換してみました
char a[ ] = "Hello";
char* c = reinterpret_cast <char*> (a);
char** b = &c;

エラーメッセージをよく読み理解するように心がけます

それからsizeofを試してみたところ
char* a 4バイト
char a[ ] 6バイト
でした
やっぱ違うんですね
03833732015/04/04(土) 07:41:32.89ID:quWyoCu5
int i = 1;
の場合、&i でi のアドレスを知る事が出来きます

char c = 'a';
の場合
cout << &c;
で表示されたのは、aでした
sizeof(&c)は4なので、アドレスのサイズを示していると思うのですが
では
cのアドレスを知るためにはどうしたら良いですか
0384デフォルトの名無しさん2015/04/04(土) 07:44:02.02ID:ryX6PA/c
cout << (void*)&c;
0385デフォルトの名無しさん2015/04/04(土) 09:06:00.76ID:YGBBXr+7
それでアドレスが表示される保証ってあったか?
0386デフォルトの名無しさん2015/04/04(土) 09:45:26.99ID:QykeKoHq
別に無理にcout使わなくてもprintfで%pとかすればいいんじゃないかな?(´・ω・`)
0387デフォルトの名無しさん2015/04/04(土) 12:04:14.16ID:GZJxoxqq
>>385
basic_ostreamに
basic_ostream<charT, traits> & operator<<(const void * p);
が有るんだからいけるんじゃね
03883732015/04/04(土) 14:55:04.92ID:AgtN2Wz8
皆さんどうもありがとうございます

今C++を勉強中ですが
(void*)が呪文のように見えます

printf("%x", &c);
16進数で示せば良いんでよね
C++習うならCも必要みたいですね
0389デフォルトの名無しさん2015/04/04(土) 15:14:43.29ID:GZJxoxqq
>>388
そりゃcout<<&c は printf("%s", &c); 相当だからね。
printf("%x", &c) がやりたいなら
cout << hex << reinterpret_cast<std::intptr_t>(&c)

ちなみに%Xはサイズ指定が不正なので誤り。
%pもvoid*以外のchar*を渡してはいけない
0390デフォルトの名無しさん2015/04/04(土) 16:37:48.72ID:QykeKoHq
何も知らないのに解説するって、どんな気分?(´・ω・`)>>389
0391片山博文MZ ◆T6xkBnTXz7B0 2015/04/04(土) 17:55:01.42ID:AbppvLIl
printf("%x", &c) がやりたいなら
cout << reinterpret_cast<void*>(&c);
か
cout << reinterpret_cast<const void*>(&c);
で充分。
ちなみにポインターのサイズはsizeof(size_t)と同じだが、
64ビット環境の場合は8バイトになるので、注意が必要。
%pにchar*を渡しても問題ない。
0392片山博文MZ ◆T6xkBnTXz7B0 2015/04/04(土) 17:58:00.99ID:AbppvLIl
printf("%x", &c);は64ビット環境では不正かも知れない
0393デフォルトの名無しさん2015/04/04(土) 18:19:13.86ID:gGW99ehv
何も知らないのに解説するって、どんな気分?(´・ω・`)>>391
0394片山博文MZ ◆T6xkBnTXz7B0 2015/04/04(土) 18:24:35.37ID:AbppvLIl
>>393
間違いを指摘してね
0395デフォルトの名無しさん2015/04/04(土) 18:56:36.77ID:QykeKoHq
間違いとまでは言わないけど、「思い込みだけで教えようとする」のは
良くないと思うよ?(´・ω・`)

例えばポインターのサイズは何ビットCPUかではなくて、環境依存だしね?(´・ω・`)
ちなみにポインタのサイズはsizeof(void*)で取らなきゃ駄目だよ?(´・ω・`)
環境やシステム、コンパイラの実装、そういったものが絡むのがポインタだから
ポインタを使ってデータにアクセスする手法は一般化できるけど、ポインタ
そのものを取り扱う時には注意が必要なんだよ?(´・ω・`)

一般化を信じ過ぎて思い込みが激し過ぎるとsizeof(size_t)でポインタのサイズが
取れるなんて嘘を他人に教える羽目になるんだよ?(´・ω・`)
0396片山博文MZ ◆T6xkBnTXz7B0 2015/04/04(土) 19:03:44.68ID:AbppvLIl
>>395
ご指摘ありがとう。
すまない、訂正するよ。
0397デフォルトの名無しさん2015/04/04(土) 19:37:59.77ID:QfyL0AY2
ポインタのサイズがバイトだって誰が決めた?
ワードアドレッシングコンピューターってのもあるのよ
0398デフォルトの名無しさん2015/04/04(土) 19:51:24.75ID:GZJxoxqq
>>391
ISO/IEC 9899:2011 p7.21.6.1
The argument shall be a pointer to void.

%pの引数はvoidへのポインターでなくてはならない
0399デフォルトの名無しさん2015/04/04(土) 19:59:43.39ID:QykeKoHq
それは「voidへのポインタと解釈される」と訳すべきじゃないかな?(´・ω・`)
0400デフォルトの名無しさん2015/04/04(土) 20:05:19.59ID:GZJxoxqq
>>399
どこを読んだらそうなるのよ
argumentは実引数ですよ
C/C++のポインターは型によってサイズも表現も
同じであることは限らないというのに
0401デフォルトの名無しさん2015/04/04(土) 20:09:59.37ID:QykeKoHq
だ・か・ら・だよ?(´・ω・`)
どんな型のポインタを渡しても、それが何か有効な操作や意味をなしている
とは解釈しない、つまりvoidへのポインタとして処理する。
こう考えるのが正しいよね?(´・ω・`)
0402デフォルトの名無しさん2015/04/04(土) 20:23:42.18ID:GZJxoxqq
>>401
>つまりvoidへのポインタとして処理する。
>こう考えるのが正しいよね?(´・ω・`)

そうだな
規格上 実引数はvoidへのポインターでなければならないから
当然fprintfはvoidへのポインターとして解釈する。
だからchar*を渡してはならないのだが、何を言いたいのかわからん。

char*が8バイトでvoid*が16バイトの処理系があったとしたら
void*にキャストして渡さないと明らかに誤作動するだろ?
0403デフォルトの名無しさん2015/04/04(土) 20:28:47.60ID:QykeKoHq
なるほど、実は君は英語が読めないんだね?(´・ω・`)
なぜか「英単語」の知識が慰め程度にあるようだけど、実に不十分だよね?(´・ω・`)
それに何を元にchar*とvoid*のサイズが違う場合があり得ると言ってるのか
とても理解できないけど、大丈夫、そんな現実は宇宙の果てまで行っても、
あり得ないから気にしなくてもいいよ?(´・ω・`)

君、実の所、プログラミングしたことないみたいだよね?(´・ω・`)
0404デフォルトの名無しさん2015/04/04(土) 20:34:35.68ID:GZJxoxqq
>そんな現実は宇宙の果てまで行っても、
>あり得ないから気にしなくてもいいよ?(´・ω・`)

なるほど。規格上は許されていないことは理解できたんだな
0405デフォルトの名無しさん2015/04/04(土) 20:40:04.09ID:QykeKoHq
いや、君は君が持ちだした規格とやらを理解できてないから何を言っても無駄だよ?(´・ω・`)
0406デフォルトの名無しさん2015/04/04(土) 20:57:44.84ID:idtQs6kn
とりあえずJISでもvoidへのポインタでなくてはならないになってるからクレーム入れてみて
0407デフォルトの名無しさん2015/04/04(土) 21:21:00.29ID:QykeKoHq
大丈夫、事プログラミングの星界ではJISは誰も気にしていないからね?(´・ω・`)
強いて気にする人がいるとすれば、JISを作った人だけだからね?(´・ω・`)
0408デフォルトの名無しさん2015/04/04(土) 21:34:30.98ID:GZJxoxqq
ISO/IEC 9899:2011 p7.21.6.1
『The argument shall be a pointer to void.』
どういう思考をしたらchar*の実引数を渡しても良いと解釈できるのよ
『void』の所は等幅フォントだぞ
0409デフォルトの名無しさん2015/04/04(土) 21:39:05.13ID:QykeKoHq
どういう思考をしたらって…そう書いてあるからだよ?(´・ω・`)
君は英語が理解できないんだから英語の文章を引用しちゃだめだよ?(´・ω・`)
0410デフォルトの名無しさん2015/04/04(土) 21:42:35.30ID:9bkiiXE2
The argument shall be a pointer to void.
直訳:引数はヴォイド型へのポインタであるべきである。

理由は>>401の通りだが、結論について述べた文なので
訳としては>>398であっているような気がするが、違うのか?
0411デフォルトの名無しさん2015/04/04(土) 21:49:44.57ID:ugaLmOKA
>>410
この場合の助動詞 shall は話者の命令または強い願望、
すなおに「引き数は void 型へのポインタだ(断言)」くらいに強く訳するのが当たり前 >>398 は正解

例
you shall die.
訳
死ね
0412デフォルトの名無しさん2015/04/04(土) 21:50:22.44ID:QykeKoHq
なぜ、その文章に「べき」などという訳が当てはめられると思い込んだの?(´・ω・`)
0413デフォルトの名無しさん2015/04/04(土) 21:52:48.21ID:ugaLmOKA
それが shall の正しい訳だ
0414デフォルトの名無しさん2015/04/04(土) 21:55:57.94ID:QykeKoHq
だ・か・ら・、君は駄目なんだよ?(´・ω・`)
さっきも言ったよね?「英単語」の知識だけで英文を解釈しちゃ駄目だよ?(´・ω・`)
0415デフォルトの名無しさん2015/04/04(土) 21:58:50.28ID:ugaLmOKA
規格を読めばわかるが、shall はそのようなシチュエーションで多用されているよね
should だったら多少含むところはあるが‥

英単語の知識すらないようでは話にならない
0416デフォルトの名無しさん2015/04/04(土) 22:00:07.46ID:idtQs6kn
言語の違いを言い訳に勝手な意訳で意味を曖昧にするとか・・・
なんか外語コンプ凄そうだしやべーな
0417デフォルトの名無しさん2015/04/04(土) 22:00:58.94ID:9bkiiXE2
まあ程度は置いておくとして、著者の意志が現れたshallという単語を省いて
事実だけ述べた>>399みたいな翻訳になるべき、という指摘の意図が見えない
理由としての事実はその通りだけど、結論としてそうなるべき、という原文なのでは?
0418デフォルトの名無しさん2015/04/04(土) 22:04:58.87ID:ugaLmOKA
そんな弱い訳ではだめだ、shall は規格等の定義文で頻出する強い単語
0419デフォルトの名無しさん2015/04/04(土) 22:06:46.41ID:QykeKoHq
なるほど、君はそもそも規格が誰「を」対象に書かれているかを
理解していなかったんだね?(´・ω・`)
じゃあ、そういう勘違いをしても無理はないよね?(´・ω・`)
君が大袈裟に持ち出してるISO/IEC 9899:2011は、処理系やライブラリを
「実装する人達を対象に書かれている」んだよ?(´・ω・`)

だから、「渡されたポインタがどんな型のポインタであれ、そのポインタで
有意な操作やアクセスをしてはならないvoid*として受け取る『べき』である」
というのが、この規格の文章の真意なんだよ?

つまり、処理系を「使う人」は、それをどう解釈すべきかというと、どんな型の
ポインタを渡しても、その型特有の動作を期待するな、ということなんだよ?(´・ω・`)
0420デフォルトの名無しさん2015/04/04(土) 22:09:05.21ID:GZJxoxqq
ISO/IEC 9899:2011のshallは処理系またはプログラムへの要求
であると4章の冒頭で定義されているよ。
結論としてそうなるとか意志という話ではなくて
それが守られなかったら"behavior is undefined"になる
という強い要求事項だし
shallは処理系だけの要求ではない
0421デフォルトの名無しさん2015/04/04(土) 22:10:18.11ID:ugaLmOKA
>>419
何その憲法9条なみの解釈‥
0422デフォルトの名無しさん2015/04/04(土) 22:11:48.51ID:9bkiiXE2
>>419
すると>>399は勝手にユーザー側に主語を置き換えて意訳した、ということ?
0423デフォルトの名無しさん2015/04/04(土) 22:12:56.89ID:GZJxoxqq
>>419
argumentってのは関数呼び出しの括弧内に書かれる式と3.3で規定されてるの。
だから『The argument shall be a pointer to void.』
は処理系への要求じゃなくてプログラムへの要求。
0424デフォルトの名無しさん2015/04/04(土) 22:28:07.79ID:t8faLDpu
>>402
>char*が8バイトでvoid*が16バイトの処理系があったとしたら
>void*にキャストして渡さないと明らかに誤作動するだろ?
お前が規格を知らないのは分かった
JIS X 3010 6.5.2
voidへのポインタは,文字型へのポインタと同じ表現及び同じ境界調整要求をもたなければならない
0425デフォルトの名無しさん2015/04/04(土) 22:37:46.63ID:QykeKoHq
やっぱり、直訳や機械翻訳に頼っちゃうようなレベルで規格書の原文を
持ち出すのは無茶だよね?(´・ω・`)

ここでvoid*を「渡すべき!渡さなければならない!」なんて解釈をしてる
人達が処理系の実装やライブラリの作成をするような事がないことを
祈ってるよ?(´・ω・`)

もちろん、君らが一所懸命void*にキャストして渡したりするのは別に
止めないからご自由に、でも、たま〜に思い出してね?(´・ω・`)

『そんな事をしろとは書かれてはいなかった』ということにね?(´・ω・`)
0426デフォルトの名無しさん2015/04/04(土) 22:41:08.38ID:GZJxoxqq
>>424
なるほどそんな規定があったのね。ありがと。
char*はvoid*と同じ表現になるので
>>402はint*とかの例じゃないと駄目だね。
0427デフォルトの名無しさん2015/04/04(土) 22:54:16.36ID:NZvoao1F
引数はvoid型のポインタにしてねくらいでよくね
0428デフォルトの名無しさん2015/04/04(土) 23:20:59.71ID:ugaLmOKA
shall はそんな意味じゃない
0429デフォルトの名無しさん2015/04/04(土) 23:32:42.85ID:QykeKoHq
いいことを教えてあげるね?(´・ω・`)
どうせ拘るなら shall だけじゃなく shall be にしてみたらどうかな?(´・ω・`)
0430デフォルトの名無しさん2015/04/04(土) 23:33:00.77ID:NZvoao1F
何でshallだけに拘るのか
shall beでセットなんだが
0431デフォルトの名無しさん2015/04/04(土) 23:36:18.79ID:QZn/smWm
「引数はvoidへのポインタにしてね
 (しなかったらundefined behaviorな)」
0432デフォルトの名無しさん2015/04/04(土) 23:53:02.41ID:+L10ZiLX
英語教室かよw
「引数はvoidへのポインタとして扱われる」くらいの意味だろ
「引数はvoidへのポインタでなければならない」ならそんな書き方しない
shall beはwill beのちょっとかしこまった言い方ってだけだよ
0433デフォルトの名無しさん2015/04/05(日) 00:06:40.49ID:FDG90W2K
I shall return.
0434デフォルトの名無しさん2015/04/05(日) 00:10:16.04ID:XqnpqZbw
you shall die.
0435デフォルトの名無しさん2015/04/05(日) 00:11:49.63ID:jTCOwTkn
>>432
>>420
0436デフォルトの名無しさん2015/04/05(日) 00:17:06.75ID:XqnpqZbw
shall we dance?
0437デフォルトの名無しさん2015/04/05(日) 00:29:31.09ID:UrJ8NZb0
何で揉めてるの?3行で
0438デフォルトの名無しさん2015/04/05(日) 00:31:58.88ID:CGkbVOZ+
>>435
なるほどね
規格読み返してみたけど君の解釈が「正しい」のかも知れんな
規格原理主義者は%pにはvoidポインタ以外渡しちゃだめだ
0439デフォルトの名無しさん2015/04/05(日) 00:32:28.59ID:db7WcjYS
ぼく
えいご
わかりません
0440デフォルトの名無しさん2015/04/05(日) 00:35:51.03ID:XqnpqZbw
>>437
我が軍と同じくらいに、どうでもいいこと
0441デフォルトの名無しさん2015/04/05(日) 00:40:44.29ID:UrJ8NZb0
>>438
> 規格原理主義者
レッテル張りかっこわる
0442デフォルトの名無しさん2015/04/05(日) 00:45:04.80ID:VLZ3sHIo
いまだに%pが使えない残念な大手コンパイラがも存在するんですよ
0443デフォルトの名無しさん2015/04/05(日) 11:38:56.88ID:SiXuOFYx
VCはcrt直るの夏ぐらいか
15年遅れてるな
0444デフォルトの名無しさん2015/04/05(日) 11:46:42.72ID:rNWPAuL5
素人意見だけど
memsetのプロトタイプ宣言がvoid*だから
どんなポインタを渡してもvoid*にキャストされるんだよね?
0445デフォルトの名無しさん2015/04/05(日) 11:52:34.36ID:ZSoXTOOk
>>444
Yes
0446デフォルトの名無しさん2015/04/05(日) 13:48:25.52ID:Y9KK0C0V
SHALL
規格の文面で絶対の決まりを表す用語
破ったら未定義動作となる
普通の英語じゃあないよな
0447デフォルトの名無しさん2015/04/05(日) 14:50:55.70ID:a2jqf7RM
でもC/C++とかで実務的に何かやってるんなら、そういう技術解説系の
決まり文句で日常の用法にはそぐわない英文も、ちゃんと意味を読み
取れないと頓珍漢坊やになっちゃうよね?(´・ω・`)
0448デフォルトの名無しさん2015/04/05(日) 16:04:05.05ID:R7Sn2ugM
まともな技術者なら規格は信用しないで参考までに留める
仕様ではなくテストコードを信用する
0449デフォルトの名無しさん2015/04/05(日) 16:56:35.52ID:DBLSnUys
ちょっと448がアスペ過ぎる
0450デフォルトの名無しさん2015/04/05(日) 17:32:07.95ID:R7Sn2ugM
>>449
黙れよ蛆虫
0451デフォルトの名無しさん2015/04/05(日) 17:57:23.15ID:XqnpqZbw
仕様を信用しない、というのならわかるような気がするが、規格を信用しない、というのは徹底しているね、何を?
0452デフォルトの名無しさん2015/04/05(日) 19:52:01.88ID:a2jqf7RM
というか、経験から規格通りに実装されていることなんて稀だよね?(´・ω・`)
そう分かってるから「実際に動作させる為」には結果として規格を
無視したような形になることも多いんだよ?(´・ω・`)
0453デフォルトの名無しさん2015/04/05(日) 19:54:44.54ID:R7Sn2ugM
つまり規格や仕様などあってないようなものなのである
これを信用するなどとてもではないが出来ない
0454デフォルトの名無しさん2015/04/05(日) 20:11:56.03ID:WDwqsM6E
>>452
有名どころのコンパイラ、かつよく使う機能で規格違反してる例を挙げてみて
0455デフォルトの名無しさん2015/04/05(日) 20:39:32.90ID:XqnpqZbw
gcc, clang
C++ にて、C の標準関数が std:: 名前空間に入っていない‥
0456デフォルトの名無しさん2015/04/05(日) 20:42:37.44ID:TvAWCJDa
実際のコンパイラで問題が起きないけど本当はダメなのかでスレが伸びていたところに
447のレスに単語レベルで反応してとんちんかんな脊髄反射レスする>>448は猿
0457デフォルトの名無しさん2015/04/05(日) 20:50:54.58ID:ZSoXTOOk
>>454
Visual C++で例外指定子が正しく機能せず例外がダダ漏れ
Visual C++で一時オブジェクトのサブオブジェクト束縛が機能していない
Visual C++でテンプレートのtwo phase lookupが未実装
0458デフォルトの名無しさん2015/04/05(日) 20:59:30.71ID:ZSoXTOOk
>>455
いや入ってるでしょ
::printfが使えてもそれは規格違反じゃない
0459デフォルトの名無しさん2015/04/05(日) 21:02:40.28ID:bBY1K80d
cなんちゃらでincludeしてないとか
0460デフォルトの名無しさん2015/04/05(日) 22:05:59.08ID:XqnpqZbw
>>458
うん、確かに文章が不正確だった、::printf() が使える、というのがいいたかったが、それは規格違反じゃないのか‥
0461デフォルトの名無しさん2015/04/05(日) 22:20:55.80ID:a2jqf7RM
まあ、あまりにも便利でみんな忘れてるんだろうけど

// コメント

は、C言語では本来 syntax error になる「べき」なんだよ?(´・ω・`)
そういった意味で、そうなってた方が便利な規格破りは、みんなが
容認し、忘れ果てているんだよ?(´・ω・`)
0462デフォルトの名無しさん2015/04/05(日) 22:42:11.81ID:PLgIHeLQ
shallを知らなかったのはともかく
ここまでアホだったとは
0463デフォルトの名無しさん2015/04/05(日) 22:55:13.16ID:ZSoXTOOk
>>461
15年ほど前の改定で仕様に入りましたよ。
ISO/IEC 9899:1999

あとinline関数とboolと関数途中での変数宣言も
0464デフォルトの名無しさん2015/04/05(日) 23:03:20.90ID:a2jqf7RM
そうだね、でも関数途中の変数宣言ができない規格のままで
//コメントが使えるコンパイラが未だにうちのメイン環境なんだよ?(´・ω・`)
0465デフォルトの名無しさん2015/04/05(日) 23:55:58.15ID:IQT7yCtj
段階的に対応することは問題ない
ただVCはC99対応しない理由を聞かれてHerb Sutterが
"C++しか対応しないからしない"みたいな
意味不明な回答で突っぱねてたから この先もダメだな
0466デフォルトの名無しさん2015/04/06(月) 02:30:52.61ID:AEDCz7+8
2012から変数宣言はブロック途中でも良くなっている。
0467デフォルトの名無しさん2015/04/06(月) 20:28:50.66ID:psi/puUG
ここの適合コードですが、
https://www.jpcert.or.jp/sc-rules/c-exp02-c.html
普通に↓こう書いた場合に比べどう優れているのかよくわからないのですが、
どういう意味でしょう。
char *p = NULL;
if (p == NULL) {
p = (char *) malloc(BUF_SIZE);
}
if (p == NULL) {
/* malloc() エラーの処理 */
return;
}
/* p を使った処理 */
free(p);
p = NULL;
0468デフォルトの名無しさん2015/04/06(月) 20:42:00.86ID:MCC65dXP
優劣以前に振る舞いが違う
0469デフォルトの名無しさん2015/04/06(月) 20:43:57.66ID:xs2FCQ4G
>>467
例えばあなたの書いたコードの/* pを使った処理 */の部分でp++なんて処理があると問題が出るので、
確保/解放のために中間変数qを使うのは有効な手段ですね
0470デフォルトの名無しさん2015/04/06(月) 20:52:12.99ID:O0Zj/Wgz
>>467
最初のpは、nullかもしれないし、そうでないかもしれないじゃない?
というかそういう問題設定なんでしょ
0471デフォルトの名無しさん2015/04/06(月) 22:09:39.85ID:kbbZVT1Z
>char *p = /* 初期化する。NULL が入るかもしれないし、NULL でないかもしれない。 */
>if (p || (p = (char *) malloc(BUF_SIZE)) )

「このサンプル、実は最初の初期化は不適切なポインタが入ってました。
 なのでifの短絡評価が危険」
などというのはただのキチガイではないか。
短絡評価は関係ないし、適合コードとやらが
未初期化の変数を参照してるじゃないか
0472デフォルトの名無しさん2015/04/06(月) 22:32:57.77ID:unSCtj/9
違うな
char *p = 〜; //ローカル変数のアドレスを設定。NULLの場合もある
if (p || (p = (char *) malloc(BUF_SIZE)) ) {
 free(p);//pがNULLでなかったらアウチ
}
0473デフォルトの名無しさん2015/04/07(火) 00:02:54.32ID:PBUFU5zN
日本語サイトだと適合コード1行目の
char *p;
がコンパイルエラーになります
原文サイトの方は訂正したっぽい
説明のための強引なコードだと思いますけど
0474デフォルトの名無しさん2015/04/07(火) 03:54:22.69ID:3rL1l7vp
マイクロソフト創立40年、ゲイツ氏のメッセージが話題に
http://daily.2ch.net/test/read.cgi/newsplus/1428323377/
「すべての机とすべての家庭にコンピューターを、というのが当初の目標だった。
この大胆なアイデアに、私たちは気が触れているとみんなが思った」。

あれからコンピューティングがどれほど進展したかを思うと感慨深い。
その革新にマイクロソフトが果たした役割は、私たち全員が誇りにできる」

とりあえず、お疲れ
0475デフォルトの名無しさん2015/04/07(火) 05:10:58.22ID:oZeWhsk3
>>467
char *p = NULL;
if (p == NULL) {
p = (char *) malloc(BUF_SIZE);
 if (p == NULL) {
 /* malloc() エラーの処理 */
 return;
 }
}

/* p を使った処理 */
free(p);
p = NULL;

君のコードの構造は、{ } ブロック階層が対応していないので、
他人には論理的に考えにくい

mallocのエラー処理は、
mallocの処理の、{ } ブロック階層でする
0476デフォルトの名無しさん2015/04/07(火) 06:10:12.54ID:YU7hVe8K
char *p;を関数の引数にしたほうが意図が伝わりやすい気がする。
void func(char *p) {
...
}

あとはこうやって呼び出せば、違反コードで配列をfree()して問題が出る。
char c[] = "abcde";
func(c);
0477デフォルトの名無しさん2015/04/07(火) 18:37:50.36ID:/U9ZAOiy
>>467
コード突入時に p にすでに有効なブロックへのポインタが入っていたときは、それを使う
そうでないときは、新たに malloc() し、使用後には free() する
という内容を適合コードは示したかったんだろう

以前の p の値を使って何かする意図がなければ >>467 で問題ない

>>475
そのインデントは無意味はおろか信用おけない
0478デフォルトの名無しさん2015/04/07(火) 21:08:26.63ID:NuDnBYW1
>>467
char *p = "hoge";
.....
の場合でも適合コードは正しく動く。
翻訳後に改訂されたのかもしれないけど、原文の解説はもうちょっと分かりやすい。
04794672015/04/07(火) 21:56:14.18ID:n9UABU2Y
>>469
これで納得しました。
 ・ポインタを2つ用意。
 ・その内の一つのポインタ(q)は領域の確保、開放以外には使わない。
 ・もう一つのポインタ(p)経由で取得した領域にアクセスする。
 ・メリット:取得した領域にアクセス時に p++ 見たいな処理があっても安全。
こういうことですよね。

>>472 >>478
このあたりの理由は、
 char *q = "aaa";
とか間違ってしまうリスクと、大して変わらん気が個人的にはします。

>>475
そうですね。そうします。
0480デフォルトの名無しさん2015/04/08(水) 07:49:04.14ID:Ll2kXDCr
>>479
>> ・メリット:取得した領域にアクセス時に p++ 見たいな処理があっても安全。

それは違う。
>>469 は >>467のURLのページとは関係ない内容で間違っている

他の人のレスは比較的正しい
つまり、>>467 のURLのページは、pというポインタが何かを指しているかもしれない
状況で必要に応じ malloc するという処理の話なので、>>467のレスのコードは比較できない
0481デフォルトの名無しさん2015/04/08(水) 08:46:48.30ID:MMv/AUox
副作用を伴う短絡評価はバグの元になりやすいというお題のはずなのに
それをif文で書いた等価なものも同じバグを発生する。
この解説では、副作用を伴う短絡評価が劣っているとは思えないな。

|if (!p) {
| if (!(p = (char *) malloc(BUF_SIZE))) {
| /* malloc() エラーの処理 */
| return;
| }
|}
|/* p を使った処理 */
|free(p);
_p = NULL;
0482デフォルトの名無しさん2015/04/08(水) 18:51:43.91ID:bmMbB0Da
C++でなんかおもしろいのない?
0483デフォルトの名無しさん2015/04/08(水) 19:50:31.72ID:zdo71eVC
>>467
なんかすっきりしないな。
/* p を使った処理 */
で示される処理は、性質の違う何種類かのpがあるわけだよね。
たとえば
 (1)char* p="aaa";
見たいなpだったり、
 (2)p=(char*)malloc(BUF_SIZE);
だったり。
(1)のケースでは*pは右辺値にしか使えないが、
(2)ケースはいきなり右辺値として使うわけにはいかないから、
/* p を使った処理 */では(1),(2)の区別をしながらの処理になるわけで、
短絡処理云々の前にコード何とかしろって見える。
0484靖国参拝、皇族、国旗国歌、神社神道を異常に嫌うカルト2015/04/08(水) 20:28:55.74ID:YGdJSkrv
★マインドコントロールの手法★

・沢山の人が偏った意見を一貫して支持する
 偏った意見でも、集団の中でその意見が信じられていれば、自分の考え方は間違っているのか、等と思わせる手法

・不利な質問をさせなくしたり、不利な質問には答えない、スルーする
 誰にも質問や反論をさせないことにより、誰もが皆、疑いなど無いんだと信じ込ませる手法


偏った思想や考え方に染まっていたり、常識が通じない人間は、頭が悪いフリをしているカルト工作員の可能性が高い


10人に一人はカルトか外国人

「ガスライティング」で検索を!..........................
0485デフォルトの名無しさん2015/04/09(木) 20:07:39.62ID:RASnxKOC
>>480
>>469は>>467のURLの内容とは違う指摘をしているけど、>>467のコードが*p=NULLとしている時点でURLの内容とは違っている
URL関係なく>>467のコードだけでみたら>>469の指摘は的を得ている
0486デフォルトの名無しさん2015/04/09(木) 20:23:04.37ID:RwhQ7Yg0
的は射るものです
0487デフォルトの名無しさん2015/04/09(木) 20:28:36.14ID:gZmmqPNO
的は射るもの、得てどうするんだ?
0488デフォルトの名無しさん2015/04/09(木) 20:34:03.02ID:gZmmqPNO
>>485
p++ していても大丈夫なように q を準備するよりは、
p は free() 用に触らずに q++ すると思う
0489デフォルトの名無しさん2015/04/09(木) 20:35:53.75ID:pcoyWA4u
射るのは弓矢じゃないかな?(´・ω・`)
的は当てるものだと思うよね?(´・ω・`)
0490デフォルトの名無しさん2015/04/09(木) 20:58:24.01ID:CjjJfO8Q
的を射る
弓矢を射る

両方アリなんじゃないか?
0491デフォルトの名無しさん2015/04/09(木) 21:54:21.49ID:gZmmqPNO
ウィリアム・テルが射たのは
りんご?弓矢?
0492デフォルトの名無しさん2015/04/09(木) 22:41:03.69ID:pcoyWA4u
射たのは弓矢で、射抜いたのがリンゴじゃないかな?(´・ω・`)
0493デフォルトの名無しさん2015/04/10(金) 07:16:55.70ID:ok6HHZm/
民衆の心を射抜いたのでは
0494デフォルトの名無しさん2015/04/10(金) 11:06:26.03ID:zodmepHa
的を得るでも正しいらしいよ
0495デフォルトの名無しさん2015/04/10(金) 13:00:18.24ID:fyEHtgl0
当を射る
0496デフォルトの名無しさん2015/04/10(金) 13:25:29.42ID:hH3SZdaD
おまえら、プログラマだろwwwww

的を射る くらいググッて調べろよwwwwww
0497デフォルトの名無しさん2015/04/10(金) 13:36:25.02ID:DJ5EZnUd
で 答えわ?
0498デフォルトの名無しさん2015/04/10(金) 20:27:21.54ID:AgT+3q87
わ?
0499デフォルトの名無しさん2015/04/10(金) 21:24:12.94ID:v6CzU2mf
>>497
ええか・・、君。>>490でも俺の書いた>>496でもいいけど、的を射るの部分をドラッグして青く反転させるんだ。
それをそのまま、アドレスバーなりツールバーの検索ボックスにでもドラッグすればいいんだ。わかるかね?

俺は、めんどくさいからやらないけどね。
0500デフォルトの名無しさん2015/04/10(金) 22:25:59.72ID:9sVpyOtZ
おもしろくない‥
0501デフォルトの名無しさん2015/04/11(土) 02:32:30.02ID:E7XSA8Ff
>>499の論法でいくと
どのような誤用も
間違いではないことになるな
0502デフォルトの名無しさん2015/04/11(土) 13:35:31.26ID:ZdZnTiH5
で 答えわ?
0503デフォルトの名無しさん2015/04/11(土) 13:36:19.71ID:C1O6jKf3
?わえ答 で
0504デフォルトの名無しさん2015/04/11(土) 13:49:18.15ID:uu6GD3vz
正しいと考える人も正しくないと考える人も
互いに相手の考えを訂正できる確固たる根拠は無し
よって互いにコイツ馬鹿と思っていればよい
0505デフォルトの名無しさん2015/04/11(土) 14:53:47.20ID:q//XRpLR
CERTって暇なんだな
昔Cをやったことのある老人が集まって
オナニーコーディング規約をドヤ顔で量産されても
迷惑以外の何物でもない
内容がセキュリティーとも関係ないし
0506デフォルトの名無しさん2015/04/12(日) 01:21:49.56ID:1M89zfPV
g++のstd::regexが糞すぎる
0507デフォルトの名無しさん2015/04/15(水) 01:08:53.41ID:5TWWmEKt
printf("1\n")
cvWaitKey(0)
printf("1\n")
でwaitkeyが無視されて勝手に進むんですが原因教えてください
0508デフォルトの名無しさん2015/04/15(水) 01:24:51.63ID:Mlfw56xY
>>507
cvWaitKeyの前にcvNamedWindowしてる?
0509Office & Gamers ◆G144Hzgh2.0e 2015/04/15(水) 01:28:16.59ID:6vmnXgxy
>>507
>cvWaitKey(0)
↓
試しにcvWaitKey(10000)ってやってみw
0510デフォルトの名無しさん2015/04/15(水) 01:51:36.77ID:5TWWmEKt
>>508
ありがとうございます
NamedWindowをcvWaitの手前に持ってきたら、キー入力を待ってくれるようになりました。
同時に、NamedWindowで表示できなかった画像も表示できました
もしよろしければ、どういう理屈なのか教えてください
0511デフォルトの名無しさん2015/04/15(水) 01:57:40.65ID:9nQYQHvG
cvWaitをウィンドウが生成される前に実行したからじゃないの?(適当)
openGLだとglinitする前に余計な処理をするとエラーするしw
0512デフォルトの名無しさん2015/04/15(水) 12:20:56.96ID:xqoucdmZ
ちょっとスレの趣旨とは違いますが、みなさんはパソコンのメモリは何GMくらい積んでますか?
0513Office & Gamers ◆G144Hzgh2.0e 2015/04/15(水) 12:23:03.99ID:6vmnXgxy
3値マンの大冒険♪(アハ♪”
0514デフォルトの名無しさん2015/04/15(水) 12:29:13.45ID:LX/U9UXu
8
0515デフォルトの名無しさん2015/04/15(水) 15:36:28.14ID:d4qHhBeu
>>512
> 何GMくらい積んでますか?
GM?
G × M = Peta ってことか?
俺は 0.000032GMB だな
05165122015/04/15(水) 21:28:09.69ID:Rj3o9wFB
真面目にお願いします。
0517デフォルトの名無しさん2015/04/15(水) 21:29:59.35ID:IVzT9Yfx
ゴメンなここは頭いいだけに皮肉れた奴も多いんだよ
0518デフォルトの名無しさん2015/04/15(水) 22:02:02.96ID:N4qRGHT9
一般人なら3~4GB ゲームならなんやらでPC触ってる奴なら奴なら6GB
お絵かきマンや金持ちは16GB
まあ平均なら6Gだと思う
0519デフォルトの名無しさん2015/04/15(水) 22:08:16.44ID:OQL6MqQO
3GB、6GBって半端じゃね?
4GBのつぎは8GBだろ普通
0520デフォルトの名無しさん2015/04/15(水) 22:11:14.63ID:N4qRGHT9
間違えたPC触ってる奴は6じゃなくて8
3って書いたのは32bit時代の人は4G積んで3.2Gまでしか使ってない人が多いんじゃない?ってこと
0521デフォルトの名無しさん2015/04/15(水) 22:21:29.27ID:t3UUHND4
>>520
> 4G積んで3.2Gまでしか使ってない

質問は(>>512)何GMくらい積んでますか? なんだから、4G でいいだろ
日本語読めないのか?
0522デフォルトの名無しさん2015/04/15(水) 22:31:11.19ID:S5fkPC3K
市販の大手メーカーのノートPCでさえ
以前から廉価モデルを除いて8GBだというのにおまえらは
0523デフォルトの名無しさん2015/04/15(水) 23:28:24.66ID:e7criVwj
>>521
参考に挙げただけだろ
日本語読めないんだな・・・
0524デフォルトの名無しさん2015/04/15(水) 23:54:10.54ID:O2BuI96f
メモリは搭載可能な上限まで積むのがポリシー。
今のPCは4GBx6の24GB積んでる。
今年は64GB積めるPCが欲しい。
0525デフォルトの名無しさん2015/04/16(木) 00:04:41.57ID:BSEegCVi
>>523
>>520 みたいな無様な言い訳すんなってことだよ
0526デフォルトの名無しさん2015/04/16(木) 00:09:14.73ID:HRSNpUJy
テキストエディットが快適で、コーヒーブレイクの間にビルドが終わり、ストリーミングビデオが観れる
私物のPCならこの程度で十分だよ
0527デフォルトの名無しさん2015/04/16(木) 00:12:08.22ID:UHwVA6F1
何をそこまでおこってんの?
わかりやすく言ってあげただけなのに。そこまで細かいこと言うんならそれこそ>>515が正しいんだが
0528デフォルトの名無しさん2015/04/16(木) 00:27:01.35ID:niirhvYM
いや>>521は揚げ足取りしたいだけだろ
どっちが無様なんだか
0529デフォルトの名無しさん2015/04/16(木) 00:30:13.75ID:BSEegCVi
何を言い訳しても >>520 が日本語を読めないバカであることは変わらないし、特に怒られてもいない
単に言い訳重ねて笑われてるだけ
0530デフォルトの名無しさん2015/04/16(木) 00:32:42.03ID:BSEegCVi
>>528
揚げ足?
積んでる量聞いてるのに、わざわざ使用量答えてるんだが w
素直に勘違いしたって言えばいいのに
0531デフォルトの名無しさん2015/04/16(木) 00:36:02.47ID:UHwVA6F1
だから何をそんなおこってんの
0532デフォルトの名無しさん2015/04/16(木) 00:53:52.59ID:UHwVA6F1
言わないとちゃんと伝わらないから言うけどさ
何G積んでる?って言ってるんだから>>512はどれくらい詰めば快適あるいは十分なのかを知りたいんじゃないかな?と僕は考えるわけ
32bitの時は4GB積んで結局3.2GBしか使えなかったでしょ?それは殆ど3Gメモリ積んでるのと一緒だよね?
それでも4GB積んでるPCが多かったと思うから、いまのメモリ積んでる人の分布を大きく分けると
3(4G積んでる32bitPCのこと),4,8,16なんじゃないかなって僕は考えたわけ。ここまで言っても「勘違いしたんだろ」って思うのならもうご勝手に。
そもそも仕様量と勘違いしたのならこんなピンポイントに使う量分けられないよね?

はぁなんでこんな長文書いてるんだろアホらしい
0533デフォルトの名無しさん2015/04/16(木) 00:57:04.90ID:Hrf2gWEy
スレ違いの昔話はうぜっす
0534デフォルトの名無しさん2015/04/16(木) 00:58:04.94ID:UHwVA6F1
うぃっす
0535Office & Gamers ◆G144Hzgh2.0e 2015/04/16(木) 01:03:51.28ID:sQiZAhF+
今日の3値マンはどんな味を出してくれるかな…w”
0536デフォルトの名無しさん2015/04/16(木) 06:20:15.93ID:BSEegCVi
>>532
長文言い訳乙 w
0537Office & Gamers ◆G144Hzgh2.0e 2015/04/16(木) 06:31:46.29ID:sQiZAhF+
while(1)ってのがムダに感じるw
0538デフォルトの名無しさん2015/04/16(木) 06:51:03.50ID:niirhvYM
>>530
>>518で積んでる量答えてるし
そのレスの3に突っ込まれたから32bitなら3までだからって説明しただけだろ
どっちが勘違いしてんだかw

>>536
本題では言い返せないからそれかw
0539デフォルトの名無しさん2015/04/16(木) 07:15:02.79ID:/uhYfzZN
これが火病というやつか
0540デフォルトの名無しさん2015/04/16(木) 07:42:45.37ID:6zGepQEU
>>538
> そのレスの3に突っ込まれたから32bitなら3までだからって説明しただけだろ
聞いてもいない 32bit 制限の説明されても、ポカーンなんですけど w
0541デフォルトの名無しさん2015/04/16(木) 07:47:45.70ID:SAbJyRpI
ftp://
0542デフォルトの名無しさん2015/04/16(木) 08:17:23.56ID:g8NZq1YF
>32bitなら3まで

何で自分のパソコンの事情が世界で普遍的だと思うかな
0543デフォルトの名無しさん2015/04/16(木) 09:04:21.79ID:RUy6v1wb
知識範囲が狭いからでしょうね
一つしか答えを思い付けないから、それが唯一の正解と思いこんでしまう
0544デフォルトの名無しさん2015/04/16(木) 09:58:40.79ID:65ROg/6+
32bitの人たちは3までしか使えないけどそれで満足してるんだよって話じゃん?
どれくらい積んでればいいのかって話(たぶん)なんだからさぁ。
0545デフォルトの名無しさん2015/04/16(木) 10:23:50.56ID:mssObkoM
6ギガ?
メモリは2枚同じサイズで差すのが常識だから、
大体2ギガ、4ギガ、8ギガ、16ギガだろう
0546デフォルトの名無しさん2015/04/16(木) 11:27:52.87ID:aTWFYFQA
>>545
1GBの2枚挿しをしてた人が
あとから足したくなって
余ってる2スロットに2GBの2枚挿しをすると合計6GBになる。

2GBの2枚挿しをしてた人が
あとから足したくなって
余ってる2スロットに4GBの2枚挿しをすると合計12GBになる。

4GBの2枚挿しをしてた人が
あとから足したくなって
余ってる2スロットに8GBの2枚挿しをすると合計24GBになる。

今は値下がりしにくいけど、
「あとから足したくなった頃には安くなっていて同じ予算で2倍の容量が買えた」
という時代は長かったので
3GB,6GB,12GB,24GBになってる人は多い。
0547デフォルトの名無しさん2015/04/16(木) 11:30:52.99ID:aTWFYFQA
>>545

2GBx2
4GBx2
8GBx2

で6スロット埋めてる
28GBですけど?
0548デフォルトの名無しさん2015/04/16(木) 11:37:12.82ID:KMafj8cF
>>545
> メモリは2枚同じサイズで差すのが常識だから、
> 大体2ギガ、4ギガ、8ギガ、16ギガだろう

「xが2の倍数ならば、xはだいたい2の冪乗数になる」!
0549デフォルトの名無しさん2015/04/16(木) 12:37:58.02ID:6zGepQEU
>>544
> 32bitの人たちは3までしか使えないけどそれで満足してるんだよって話じゃん?
今度はいきなり満足してるとか言い出したぞ w
0550デフォルトの名無しさん2015/04/16(木) 12:38:37.99ID:65ROg/6+
実際1,2スロットの人がほとんどだと思いますけど
世間から見てPCマニアのおれたちはそんなことないが
0551デフォルトの名無しさん2015/04/16(木) 12:39:06.84ID:65ROg/6+
火病やべえな
0552デフォルトの名無しさん2015/04/16(木) 13:47:10.48ID:Wbz2Z132
>>545
いや、初期のCorei7(Bloomfield)は 3 channel x 2 = 6 だったから。
3枚差しとか6枚差しとか普通。

http://ja.wikipedia.org/wiki/Intel_Core_i7
Bloomfieldを参照のこと
0553Office & Gamers ◆G144Hzgh2.0e 2015/04/16(木) 14:42:37.58ID:djFvfTCc
今日の3値マンは他のスレでwhile(1)を披露したなw
0554デフォルトの名無しさん2015/04/16(木) 20:11:18.13ID:KXIZIqL9
test
0555デフォルトの名無しさん2015/04/16(木) 20:59:59.39ID:niirhvYM
>>540
3, 6は半端とつっこみがあっただろ

>>545
1GB * 2 + 0.5GB * 2 = 3GB
0556デフォルトの名無しさん2015/04/16(木) 21:49:07.79ID:BSEegCVi
>>555
> 3, 6は半端とつっこみがあっただろ
突っ込みは正しい
説明がポカーンなだけ w
0557デフォルトの名無しさん2015/04/16(木) 21:59:50.81ID:niirhvYM
可能性として>>518で挙げた所にバカな突込みが入っただけだからな
実際に3, 4,・・・といるしな
0558デフォルトの名無しさん2015/04/16(木) 22:34:42.70ID:BSEegCVi
>>557
とうとうツッコミした奴にまで責任転嫁し始めたか、最低だな
まあ、>>520 みたいなバカな言い訳した後だとカッコ悪いだけだけど w
0559デフォルトの名無しさん2015/04/16(木) 23:10:51.94ID:niirhvYM
>>558
同一人物視した方が都合いいのかわからないが
都合が悪いレスは同一人物とか統合失調症を疑った方がいいぞ
0560Office & Gamers ◆G144Hzgh2.0e 2015/04/16(木) 23:13:52.11ID:djFvfTCc
2値オセラーとかいるしなw
0561デフォルトの名無しさん2015/04/17(金) 00:38:54.51ID:cGoztfno
いい加減しつこいよお前
0562デフォルトの名無しさん2015/04/17(金) 00:47:49.41ID:u6kt2Ekt
複数のスレで出没してしかも誤爆までしてるからNGでいいんじゃね
ただの愉快犯
0563デフォルトの名無しさん2015/04/17(金) 00:51:47.96ID:v+rC22k7
周りが全部敵にみえるって過去にひどいイジメにでもあったんじゃね
まぁ敵ですけど
0564デフォルトの名無しさん2015/04/17(金) 01:05:50.04ID:HjmIZ4g1
>>562
片やQコテよりどレベル低いからな
0565デフォルトの名無しさん2015/04/17(金) 01:41:54.43ID:KDCE8l09
前にも何回か違う名前で荒らしてたアホやで
決め台詞は DarkBasicは C++より速い だったかな
0566Office & Gamers ◆G144Hzgh2.0e 2015/04/17(金) 03:23:14.17ID:dW7xxEmp
テスト、っとw
0567デフォルトの名無しさん2015/04/17(金) 06:26:28.40ID:ZNx/e6Ag
>>559
横からさんざん >>520 擁護してたのに言い返せなくなったのか、いきなり突っ込んだ奴をバカ呼ばわりってこと?

き◯がいだな
0568デフォルトの名無しさん2015/04/17(金) 07:17:40.02ID:u6kt2Ekt
>>567
既に説明あるからログ読めよ
流れも見ずに突っ込むなら無駄

>>518 例を挙げる
>>519 突っ込みが入る
>>520 説明する
>>521 その説明に対してバカな突っ込みが入る
後は揚げ足取りや暇つぶしや愉快犯が沸いた
0569デフォルトの名無しさん2015/04/17(金) 08:00:26.91ID:fqdIcrAS
確かにスレの流れはちゃんと整理した方がいいな

質問者は明確に

> 何GMくらい「積んでますか?」

って聞いてるのに、質問者のが使ってるOSも使い方もわからないのにも関わらず

> 何G積んでる?って言ってるんだから>>512はどれくらい詰めば快適あるいは十分なのかを知りたいんじゃないかな?と僕は考えるわけ

と妄想で持論を展開(しかも横からしゃしゃり出てきた他人(自称 w))

反撃くらって撃沈したら、いきなり突っ込んだ >>519 をバカ呼ばわり
ついでに、>>546 を見て慌てて

> 1GB * 2 + 0.5GB * 2 = 3GB
> 実際に3, 4,・・・といるしな

とかをさりげなく言い始める ← 今ここ w
0570デフォルトの名無しさん2015/04/17(金) 10:30:58.48ID:YFs/nvzQ
で、GMって何?
0571デフォルトの名無しさん2015/04/17(金) 11:50:32.29ID:P7VRyRZ7
こいつの頭まじハッピーセット
0572デフォルトの名無しさん2015/04/17(金) 15:02:41.73ID:zAiKc9Y9
プログラマに自宅のPCのスペック聞くと
12GB、18GB、24GBの奴が多くね?
0573デフォルトの名無しさん2015/04/17(金) 19:26:23.25ID:5+QroZ9q
>>572
>>546 や >>552 の理由で 12GB とか 24GB はあるね
合わせ技で 2GB x 3 + 4GB x 3 = 18GB もあるかもしれないけど、知ってる範囲では見たことないな
0574デフォルトの名無しさん2015/04/17(金) 19:37:31.04ID:BQI52oic
昔9GBだった。
1G x 3 + 2G x 3
0575デフォルトの名無しさん2015/04/17(金) 20:29:43.29ID:pt+e+gyf
2chMateでコテハン付きをNGにする設定って無い?
クソコテ=キチガイ
0576デフォルトの名無しさん2015/04/17(金) 22:47:04.02ID:ZNx/e6Ag
質問すべきスレもわからんような奴はスルーで
0577デフォルトの名無しさん2015/04/17(金) 23:59:25.27ID:ivNv2EE3
>>573
18GBの人は
1GBx2で始めた人が
8GBx2を足してそうなるんじゃないか
円高末期にそういう人が増えてたよ
0578デフォルトの名無しさん2015/04/18(土) 00:23:17.16ID:d+XtVUDX
>>569
>>532と>>557は別人なのに同一人物視かめでたいな
0579Office & Gamers ◆G144Hzgh2.0e 2015/04/18(土) 00:50:30.54ID:yZFnrc/6
糞コテはスルーで(笑)
0580デフォルトの名無しさん2015/04/18(土) 05:48:59.80ID:Ql1IVHxp
>>578
別人かどうかなんて書いてないし、どうでもいいことなんだが
所詮自称だしな w
0581デフォルトの名無しさん2015/04/18(土) 07:12:48.29ID:d+XtVUDX
>>580
つまり「所詮自称だからと都合の悪いレスは同一人物」って事か
統合失調症の可能性はあるな
0582デフォルトの名無しさん2015/04/18(土) 08:33:04.55ID:gF5ewt4w
>>581
自称だからわからないってことでしょ
匿名掲示板で今さらなに言ってるるんだよ、バカか?
0583デフォルトの名無しさん2015/04/18(土) 09:00:43.34ID:EU47YEOb
>>582
デフォルトで「分からない」になってるのだから
「別人だなんて言ってるけど、そんなものは本人がそう言ってるだけ」
なんてことをわざわざ持ち出した上で
それを根拠に「分からない」の結論を作り直す必要はないんだよ
0584デフォルトの名無しさん2015/04/18(土) 16:45:53.21ID:d+XtVUDX
>>582
わからないのに>>569で同一人物視をする謎の思考回路
0585デフォルトの名無しさん2015/04/18(土) 18:07:37.49ID:Ql1IVHxp
>>584
>>580

誤魔化したくて必死なのは伝わった w
0586デフォルトの名無しさん2015/04/18(土) 19:43:18.99ID:W5cmUeFG
何で頭の悪い人ってスレ違いの話題で盛り上がるの
0587デフォルトの名無しさん2015/04/19(日) 16:01:20.13ID:hEE/ZwBn
スレの歴史に残るレベルのアホ
0588デフォルトの名無しさん2015/04/20(月) 22:39:33.22ID:w48MAYc9
C++コンパイラーはメモリを32GB以上にしないと覚醒しない
覚えとくように
0589デフォルトの名無しさん2015/04/20(月) 23:15:44.50ID:ybyM7iyV
WinSockでOP25Bを回避出来た方いませんか?
0590デフォルトの名無しさん2015/04/20(月) 23:52:31.97ID:97yLAJoH
スレの歴史に残るレベルのクソレス
0591デフォルトの名無しさん2015/04/21(火) 00:05:08.26ID:phn1j2/i
スレの歴史に残るレベルのクソ君 >>590
0592デフォルトの名無しさん2015/04/21(火) 10:26:24.33ID:kERjku4F
ラムダ式ってauto使いたくない場合はなんて型に入れるんですか?
0593デフォルトの名無しさん2015/04/21(火) 12:05:34.30ID:C9LOH8tJ
std::function
0594デフォルトの名無しさん2015/04/21(火) 20:45:00.85ID:FeBOFU9B
http://cpp.aquariuscode.com/preincriment-vs-postincriment
ネタ提供
0595デフォルトの名無しさん2015/04/21(火) 20:45:36.79ID:xYojguBq
>>593
もっと根本的な型ってないんですか?
ポインタで言うところのvoid (*unko)()みたいな
0596デフォルトの名無しさん2015/04/21(火) 22:16:41.08ID:bz6H/Jwq
>>595
「根本的」が意味不明なんですけど
0597デフォルトの名無しさん2015/04/21(火) 22:19:31.34ID:Pl8n/tDc
ライブラリに依存するような型じゃなくて言語仕様にかかわるような型ってことじゃね。
0598デフォルトの名無しさん2015/04/21(火) 22:31:48.12ID:1EHStcFK
名前欲しいならちゃんと関数オブジェクト作れば
0599デフォルトの名無しさん2015/04/21(火) 22:32:33.88ID:Kx+k4AzB
どれだけの変数をキャプターするか決まってないのに汎用的な型など無い
キャプターしないなら
bool (*pf)(float) = [](float){return true;};
0600デフォルトの名無しさん2015/04/21(火) 22:57:45.50ID:zHBTo/Gl
ライブラリに依存しないならこうだな。
int i = 0;
auto f = [&](float){ i++; return true; };
using unko_type = decltype(f);
unko_type f2 = f;
0601デフォルトの名無しさん2015/04/21(火) 23:15:55.88ID:63pNRQRH
typeidの結果はstd::type_infoだけど
特定のライブラリーに依存してそうなった(違うライブラリーに変えたら違う型になる)のではなく
言語仕様でそうなるんだよ
0602デフォルトの名無しさん2015/04/21(火) 23:22:53.40ID:TQ6c4YSW
auto使っちゃダメじゃん
0603デフォルトの名無しさん2015/04/21(火) 23:34:41.83ID:UJ2UkLE+
>>601
functionはtype erasureの時点で少なくとも言語仕様には含まれないと思うのだが
0604デフォルトの名無しさん2015/04/21(火) 23:36:23.06ID:aVe+RqDf
>>599
ラムダ式って関数ポインタに格納できたんですか!
ありがとうございます
0605デフォルトの名無しさん2015/04/23(木) 05:25:12.01ID:TovS+sSr
>>603
アナタの定義する言語仕様を明記しよう
0606デフォルトの名無しさん2015/04/23(木) 09:57:09.88ID:yeD908Xe
std名前空間の中身がどこまで言語仕様と繋がってるのかが曖昧なの?
0607デフォルトの名無しさん2015/04/23(木) 11:10:50.83ID:frIG+ZEE
言語仕様書にはライブラリ仕様も書かれているので
「いわゆるコア言語仕様(ライブラリ除く)」と書けば
605のレスが付くことは無かった
0608デフォルトの名無しさん2015/04/27(月) 23:20:55.95ID:G3XeQhow
初心者です

知り合いから提供してもらった.cppをコンパイル(g++ test.cpp -lgmp)したところ、
コンパイルは通ったものの segmentation fault がでました
先方の環境では動作していたので、要するに環境依存を疑っています

スタックサイズの無制限化(ulimit -s unlimited)はやりましたが、変化なし
他に疑うべき項目はありますか?

私の環境はvmware player 7.1.0, ubuntu 14.04 64bit, メモリ4GB(Windows上は12GB)です.
他に書くべき情報があれば聞いて下さい
(先方の環境は残念ながら、わかりません)
0609デフォルトの名無しさん2015/04/27(月) 23:24:02.37ID:EhmYcCLf
プログラムがバグってんだよ
0610デフォルトの名無しさん2015/04/27(月) 23:49:19.53ID:9tEbIo2f
>>608
ハロー
0611デフォルトの名無しさん2015/04/28(火) 00:08:46.01ID:CsdWamuz
「先方」の環境ではマグレで動いていた。
0612デフォルトの名無しさん2015/04/28(火) 00:33:01.00ID:Ag1E0/EC
>>610

研究用のプログラムのため貼れません
答えにくい質問の仕方ですいません

作ってもらった人には、初歩的な質問は聞きにくい状況で困っています
典型的な落とし穴とかで無いなら、なんとかして制作者に教えてもらいますが。。。

>>611
そうかも
0613デフォルトの名無しさん2015/04/28(火) 00:41:15.10ID:cv8HsePY
C/C++のスレなのに、コード貼れないというのは不毛なので
このスレで聞く以外の方法をあたってください
0614デフォルトの名無しさん2015/04/28(火) 00:43:19.53ID:8GJXCl2Y
自分で治す気ねーのかよ
んなら聞くな
0615デフォルトの名無しさん2015/04/28(火) 00:43:58.21ID:7uhGcpVL
デバッガで追うしかないな
0616デフォルトの名無しさん2015/04/28(火) 01:34:18.57ID:nYevN8uq
>>608
> 知り合いから提供してもらった.cppをコンパイル(g++ test.cpp -lgmp)したところ、

他にGMPを使う簡単なeasy.cppとか作って試してみる
easyが動けばtestに問題があるかもだし
easyも動かければGMPの導入にミスってるかも
0617デフォルトの名無しさん2015/04/28(火) 09:47:43.55ID:Ag1E0/EC
はい, すいませんでした.

>>616
やってみたところ、正常に動作しました.
0618デフォルトの名無しさん2015/04/28(火) 12:02:08.42ID:Gh79Ock8
>>617
じゃあ、test.cppの中に不具合があるからそれを直してください。
中のどこに不具合があるのか質問する場合、そのコードを晒さないと誰も分かりません。
0619デフォルトの名無しさん2015/04/28(火) 12:50:47.21ID:6LggvJNZ
静的ライブラリで
a.libを使ったb.libがあります
ここで、a.lib、b.libをつかったc.cを作ったとすると
a.libって2重にリンクされることになるんですか?

よろしくお願いします
0620デフォルトの名無しさん2015/04/28(火) 12:52:51.86ID:aOjOgtBz
ならん
0621デフォルトの名無しさん2015/04/28(火) 13:16:20.04ID:6LggvJNZ
>>620
なんとなくわかったっぽい
a.libがなくてもa.hがあれば、b.libを作れるっぽい

ありがとうございました
0622デフォルトの名無しさん2015/04/28(火) 21:32:14.52ID:y7G+sMsB
>>612
コンパイル時にリンカ指示オプションにてスタックサイズを広げる -Wl,--stack,XXXXXX
0623デフォルトの名無しさん2015/04/29(水) 14:56:56.44ID:oWkv3uf5
>>608
何も書かなくていいから
環境依存=お前のバグ
という自覚を持て
そしてもう来るな
0624デフォルトの名無しさん2015/05/04(月) 22:14:09.60ID:89QT3Y97
是非はともかく
char* p = new char[1];
delete (double*)p;

これっていいの?
0625デフォルトの名無しさん2015/05/04(月) 22:14:46.80ID:PtQR6qLE
ダメ
0626デフォルトの名無しさん2015/05/04(月) 22:40:37.58ID:89QT3Y97
こっちは?
delete [] (double*)p;
0627デフォルトの名無しさん2015/05/04(月) 22:42:39.25ID:08JPs5XI
もっとダメ
0628デフォルトの名無しさん2015/05/04(月) 22:57:23.69ID:032ZDXd8
めんどくさいこと考えないでvector使えばいいよ
0629デフォルトの名無しさん2015/05/04(月) 23:05:34.40ID:89QT3Y97
stlは遅いから嫌です
0630デフォルトの名無しさん2015/05/04(月) 23:16:43.27ID:FSRETmsJ
20世紀から来たのかな?
0631デフォルトの名無しさん2015/05/04(月) 23:43:31.80ID:ynlb8Lso
>>629
実測して言ってないだろ
0632デフォルトの名無しさん2015/05/04(月) 23:53:46.13ID:bBzreh2/
今どきSTLなんかを使ってる奴は見たことがない
0633デフォルトの名無しさん2015/05/05(火) 01:07:18.70ID:6Zpr8NWl
STL使わないなら何使うの?
0634デフォルトの名無しさん2015/05/05(火) 01:16:49.84ID:IwYQO1N8
boostォ・・・
0635デフォルトの名無しさん2015/05/05(火) 01:54:38.38ID:MpZH0ua1
>>632
では代わりに何を?
0636デフォルトの名無しさん2015/05/05(火) 02:00:30.62ID:JPFk61nl
OTL
0637デフォルトの名無しさん2015/05/05(火) 02:13:34.02ID:baTSYkNB
std::vectorでいいだろう
0638デフォルトの名無しさん2015/05/05(火) 03:05:27.11ID:l36qSXP+
poco a poco
06393732015/05/05(火) 20:10:46.92ID:pzcWHEOX
C++とCを勉強中ですが
virtualの仮想継承は実用的にどのように使っているのですか

おなじ名前の関数はただの混乱の元
必要なら異なる名前を名付けて直接呼び出せば良いと思うのですが
0640デフォルトの名無しさん2015/05/05(火) 20:30:49.19ID:jbl2W/2M
仮想継承は関数の継承のことじゃない
class A : public virtual B, public virtual C {
}
これが仮想継承

お前が言ってるのは仮想関数のことだな
これはAを継承するBをAとして扱うときに用いるメンバ関数だ
「ポリモフィズム」あたりで検索してみると詳しく解説しているサイトが見つかるだろう
0641デフォルトの名無しさん2015/05/05(火) 20:33:04.83ID:jbl2W/2M
って、関数の継承ってなんじゃw
0642デフォルトの名無しさん2015/05/05(火) 20:40:42.44ID:9K31UNd+
「質問者はバカ」→「だから質問が間違っているに違いない」ってパターン多いね。
0643デフォルトの名無しさん2015/05/05(火) 20:42:20.65ID:vYfhfuWD
仮想継承は非推奨です
0644デフォルトの名無しさん2015/05/05(火) 21:58:09.56ID:I0XQahVA
何の根拠も述べないお前の主観のつぶやきなど
便所の落書きと同じ
0645デフォルトの名無しさん2015/05/05(火) 22:42:43.38ID:JPFk61nl
>>640
初心者にwwwで検索はかわいそうだろ
ろくに知識の無いやつが適当なことかいてるのを鵜呑みにしちゃうじゃん
っていうか、wwwに有益な情報はほぼ無い、大抵便所の落書き

プログラミング言語C++を読め
聖人著なんだから、まちがいない
0646デフォルトの名無しさん2015/05/05(火) 23:19:47.13ID:uuGFM0ur
>>645
それ読んで記事書いてる奴だっているだろうから一概にそうも言えん
0647デフォルトの名無しさん2015/05/05(火) 23:31:31.94ID:JPFk61nl
情報というのは情報自体も重要だが、それ以上に源が重要である
0648デフォルトの名無しさん2015/05/06(水) 01:00:58.21ID:OH7RYx3K
>>640
お前の脳内定義を他人に押しつけるなよ
もし正しいというのなら規格の何ページ目で使われいる用語なのか示してみ
0649デフォルトの名無しさん2015/05/06(水) 01:22:14.48ID:N/1lBqpF
クラスを菱形に継承する時に基底クラスのインスタンスを一つにする目的で使う。
0650デフォルトの名無しさん2015/05/06(水) 02:30:46.24ID:ajsjxsHP
読み込んだ画像をHSVに変換、255*255サイズの画像に合わせてResizeしたいのですがうまく動きません(ビルドは動く)
なにが原因なのでしょうか?どうか教えてください。

IplImage *src_img,*hsrc_img,*h2src_img;
src_img = cvLoadImage(argv[1],CV_LOAD_IMAGE_ANYCOLOR);
src2_img = cvLoadImage(argv[1],CV_LOAD_IMAGE_ANYCOLOR);
cvCvtColor(src_img,src2_img,CV_BGR2HSV);
src2_img = cvCreateImage(cvSize(255,255),IPL_DEPTH_8U,1);
cvResize(hsrc_img,src2_img,0);

コマンドプロンプトエラー内容
Assertion failed(src.type() == dst.type()) in Resize,
0651デフォルトの名無しさん2015/05/06(水) 02:33:50.00ID:ajsjxsHP
ごめんなさい間違えました

IplImage *src_img,*hsrc_img,*src2_img;

src_img = cvLoadImage(argv[1],CV_LOAD_IMAGE_ANYCOLOR);
hsrc_img = cvLoadImage(argv[1],CV_LOAD_IMAGE_ANYCOLOR);
cvCvtColor(src_img,hsrc_img,CV_BGR2HSV);
src2_img = cvCreateImage(cvSize(255,255),IPL_DEPTH_8U,1);
cvResize(hsrc_img,src2_img,0);
0652デフォルトの名無しさん2015/05/06(水) 02:50:10.13ID:EsqtbM0m
「ビルドは動く」
という日本語が分からん
0653初心者です2015/05/06(水) 03:08:00.89ID:GDfCo5jZ
深夜なので向こうのスレではどうやら回答が頂けそうもなく、こちらに投稿することをお許し下さい。
当方ビジュアルスタジオ2010にてアクションゲームを作っているんですが、
デバッグ中、配列に格納したマップ情報とオブジェクトとの判定をする部分で
ごくまれにエラーが起きて停止します。
経験則で判断すると、マップ判定でのエラーは
マップ情報の無い部分にオブジェクトが飛び出すというものが多かったんですが
今回は目視ですべてのオブジェクトが飛び出してるか否か確認出来る状態で
毎回エラー発生時に怪しいオブジェクトがいないので、今までのエラーとは違うような気がします。
しかも、滅多にそのエラーが出ないため、原因を探れません。

ただ、気持ち悪いことがひとつありまして、そのエラーで停止したあと、
マップの情報を入れた配列にカーソルを当てて、要素を見たら、
途中から「?」という状態になって表示されてるんです。
http://download1.getuploader.com/g/zipcodezipcode/91/B.png
http://download1.getuploader.com/g/zipcodezipcode/90/A.png
これがおかしなことに、見るのを止めて、もう一度カーソルを合わせてみると
今度はちゃんと中身が入ってる状態で表示されたりします。

ビジュアルスタジオの扱いにまだ慣れてないせいもあり、
中身が「?」で表示されたのは初めてだし、覗き直すたびに
「?」だったり、ちゃんと中身が見れたりすることが気持ち悪いんですが
これは別に、問題ないのでしょうか?(もともとそういうものだ、とか)
もし、ゲーム中に配列の中身が「?」みたいになる瞬間があるのなら
そりゃいきなりオブジェクトがど真ん中にいてもエラーになると思うんです。。。
これが原因なのかと思うんですが、、違いますか?
もしくは配列覗いたときの、「?」表示はビジュアルスタジオのバグなんでしょうか?

ちなみに、マップ配列の中身の格納はゲームが始まる最初に行っているので、
ゲーム中にマップ配列の中身が変わることは考えられない仕様です。
だとするとこの「?」はなんなんでしょうか?
考えられる要因を教えて下さい、お願い致します。
0654デフォルトの名無しさん2015/05/06(水) 03:21:02.89ID:EsqtbM0m
マップなんて単語つかってますど、あなたが作ったデータ型でしょ?
それを当たり前のように使われても誰もわかりませんよ。
std::mapではないですよね?w
0655デフォルトの名無しさん2015/05/06(水) 04:53:19.34ID:AcP8t/hR
クラスを「継承」って日本語がおかしいだろ
クラスは派生するもの
0656デフォルトの名無しさん2015/05/06(水) 05:16:28.80ID:cCF2kAXu
菱形に継承の意味がわからん
0657デフォルトの名無しさん2015/05/06(水) 05:26:55.58ID:7CzaKoqz
class A

class B1 : public A
class B2 : public A

class C : public B1, public B2
0658デフォルトの名無しさん2015/05/06(水) 06:17:26.16ID:aJ286N4P
仮想継承と言ったらただの関数の継承するだけじゃなくて仮想関数を継承してますってことだろ。
基底クラスの話なら仮想派生(virtual derivation)とか仮想基底クラス(virtual base class)という言葉が規格では使われている
0659デフォルトの名無しさん2015/05/06(水) 08:39:39.56ID:vIrt8u3h
嘘を教えるな
仮想継承なんて言葉は無い
勝手に意味を推論するな
0660デフォルトの名無しさん2015/05/06(水) 08:57:30.92ID:UJrx/1uR
>>639
とりあえず「virtual デストラクタ」で調べ
0661デフォルトの名無しさん2015/05/06(水) 12:22:16.16ID:HVBAvI3a
>>653
マルチしてこっちに移ったようで自己解決するも報告レスなし
初心者かたるな
私ね
ttp://peace.2ch.net/test/read.cgi/tech/1424782918/868
0662デフォルトの名無しさん2015/05/07(木) 16:57:17.35ID:uDHc9Yu6
C#でいうところのdelegateの概念は、VC++では何て言うのでしょうか?
VC++でFormを別スレッドから操作したいのですが。CLRは使いません。
0663デフォルトの名無しさん2015/05/07(木) 17:23:10.27ID:zVX6dqaE
C++ POCO 楽しいねw
0664デフォルトの名無しさん2015/05/07(木) 17:35:11.50ID:lOYSep7k
>>662
関数オブジェクト?
0665デフォルトの名無しさん2015/05/07(木) 18:24:43.73ID:KZqJgOca
>>662
同一の概念は無いが似たことを実現するのはstd::function
0666デフォルトの名無しさん2015/05/07(木) 19:16:53.54ID:YvFBSl+t
>>662がやりたいのはinvoke相当なんだろ
delegate相当は関数オブジェクトとかラムダだけど
invoke相当をやるためにはUIスレッドにメッセージ飛ばさないといけないよ
簡単にできるフレームワークってあるのかな?
0667デフォルトの名無しさん2015/05/07(木) 20:11:28.94ID:NPJhmwrP
Boostだとsignals2かな?
http://www.kmonos.net/alang/boost/classes/signals2.html
0668デフォルトの名無しさん2015/05/07(木) 21:42:44.56ID:CSFF77Jn
移動先の部署でC言語、C言語うるさいから、今時Cかぁ、めずらしいなとおもってたら
クラスがどうとか、CStringがどうとかいってるんですが・・・
0669デフォルトの名無しさん2015/05/08(金) 17:37:50.39ID:kFO8QtLJ
C++でビットの処理はできますか?
char型を定義してそのnビット目を読み取ったり、反転させたりしたいです
0670デフォルトの名無しさん2015/05/08(金) 17:45:14.98ID:JgJK5K7B
~&|^を使う
0671デフォルトの名無しさん2015/05/08(金) 17:53:46.46ID:6ERCZCqI
Cで出来る事は当然C++でも出来る
0672デフォルトの名無しさん2015/05/08(金) 18:04:09.48ID:+qn3R8Pm
んなこたーない
0673デフォルトの名無しさん2015/05/08(金) 18:09:35.81ID:oCL66D4S
何ビット目から何ビットのサイズを取り出すとか
何ビット目から何ビットのサイズにXXをセットとかは関数作った方がええ
0674デフォルトの名無しさん2015/05/08(金) 18:29:52.22ID:8rNx0yTC
標準Cで出来てC++で機能的に出来ない事ってなんだと思って調べた
・restrictポインター
・配列引数の最小サイズ指定
・ファイルの排他オープン
・可変長配列
ぐらいか
0675デフォルトの名無しさん2015/05/08(金) 18:32:05.35ID:kFO8QtLJ
そういった関数はないんですね
自分で関数を作ってみます
ありがとうございました
0676デフォルトの名無しさん2015/05/08(金) 18:49:23.97ID:uYrkkYPn
>>674
可変長配列は入ったよ
C99とはちょっと仕様が違うけど
0677デフォルトの名無しさん2015/05/08(金) 19:56:24.15ID:6ERCZCqI
Cの関数をクラスでラッピングしてもいいべさ
0678デフォルトの名無しさん2015/05/08(金) 20:08:19.41ID:UBjnUI5T
>>674
designated initializer
compound literal
classという名前の変数を作る
0679デフォルトの名無しさん2015/05/08(金) 20:28:12.29ID:MImsZWXj
std::bitsetは?ちょっとずれるか
0680デフォルトの名無しさん2015/05/11(月) 15:53:03.96ID:D3XiQnjz
std::queueにclearがないのは何故ですか?
0681デフォルトの名無しさん2015/05/11(月) 20:31:30.34ID:AYB9vRVo
>>680
正解は分からないけど、やっぱり「queueを使うとき普通clearは使わない」
ってことなんでしょうかね
自分も使いたいと思ったことないし、以下のところを見てもまあそんな感じ

http://stackoverflow.com/questions/3874624/why-stdqueue-doesnt-support-clear-function
http://stackoverflow.com/questions/493774/why-dont-the-standard-c-container-adaptors-provide-a-clear-function
0682デフォルトの名無しさん2015/05/11(月) 22:04:19.53ID:rPDYXkhb
誰か俺に凄い技を教えてくれよ。
実戦で使えるような高等テクニックがいいなあ。
0683デフォルトの名無しさん2015/05/11(月) 22:07:23.82ID:b3E9w1jj
#define private public
0684デフォルトの名無しさん2015/05/11(月) 22:49:37.40ID:fXdd85Lw
>>682
->*
::*
0685デフォルトの名無しさん2015/05/11(月) 23:08:46.62ID:sOTWmfyN
printf("%s\n",
"unko tool help\n"
" usage unko.exe \n"
" buriburi\n"
);
0686デフォルトの名無しさん2015/05/11(月) 23:35:02.89ID:0Z+vN+uv
template<typename T, typename U>
class baka {
};

template<typename T, typename U>
class baka<U, T> {
}; 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
0687デフォルトの名無しさん2015/05/13(水) 18:33:06.67ID:hcYv++4k
>>680
標準化委員会が低能だから。
コンテナアダプターと称してclearを無くしつつ
実体はアダプターでなくコンポジションになっていて
コンテナへのアクセス手段が無いのはただの設計ミス。
この場合アダプターというのは内部の実装の都合に過ぎない
0688デフォルトの名無しさん2015/05/17(日) 16:23:58.52ID:R3tkd0Ad
complex<double> a = (2.0, 5.5);
cout << a;
と書いて実行すると
(5.5,0)
と表示されます
数字をいろいろと変えてみたところ
(虚部,0)
といった表示をしているようです

どうすれば(2.0,5.5)のような通常の表示になりますか?
0689デフォルトの名無しさん2015/05/17(日) 16:46:41.16ID:D+ZZ1tPa
俺の脳内コンパイラーによると
complex<double> a = {2.0, 5.5};
0690デフォルトの名無しさん2015/05/17(日) 17:09:21.48ID:R3tkd0Ad
>>689
本当だ!{}のカッコに変えたら(2,5.5)と表示されました
ありがとうございます

でもマイクロソフトの解説ページには()を使って書いてるんだよなぁ
0691デフォルトの名無しさん2015/05/17(日) 17:10:25.06ID:R3tkd0Ad
には→では
0692デフォルトの名無しさん2015/05/17(日) 17:10:39.98ID:ZJ6cYS77
complex<double> a(2.0, 5.5);の見間違いだろう
0693デフォルトの名無しさん2015/05/17(日) 17:11:34.72ID:02t/SrUA
これがカンマ演算子の罠か
0694デフォルトの名無しさん2015/05/17(日) 17:14:43.01ID:R3tkd0Ad
>>692
よく見たらそうだった
ありがとう

集中力切れてきたのかな、>>690の日本語もおかしいし
0695デフォルトの名無しさん2015/05/17(日) 21:39:19.50ID:B0Fe1+FI
"あああ iii uu "
" ああ い "
" あ "
みたいにいくつかの単語が半角スペースで区切られている時に、
先頭の単語を取り出すもっとも効率の良いアルゴリズムを教えてください。
この例だと
"あああ"
"ああ"
"あ"
を取出したいです。
出来れば、n番目を指定して取り出せると、さらに良いです。
0696デフォルトの名無しさん2015/05/17(日) 21:40:51.39ID:ZJ6cYS77
そのまま実装する
0697デフォルトの名無しさん2015/05/17(日) 22:47:54.63ID:D+ZZ1tPa
n番目を簡単に実装するならstringstreamだろうけど
効率重視ならそのまま696の言うとおりそのまま実装するしかない
0698デフォルトの名無しさん2015/05/18(月) 17:36:27.08ID:/fldf48Z
連続したスペースを、1個の区切りとするか
または、それぞれのスペースが個々の区切りとするか

"あああ(SPC)(SPC)い" (SPC) は半角スペース
前者は 2要素で "あああ" "い"
後者は 3要素で "あああ" "" "い"
0699デフォルトの名無しさん2015/05/20(水) 17:49:08.10ID:bKVLu7W3
C++でstatic なメンバ変数を持つクラスを作りたい場合、
static class A{
  public:
  static int m_i;
}
とやったら出来たのですが、class の前のstaticは有っても無くても良いみたいで、
m_iのほうにstaticを付けておくと良いみたいなのですが、
class の前のstaticはどういう意味がありますか?
0700デフォルトの名無しさん2015/05/20(水) 18:05:35.26ID:0+0ubStg
static classって中にあるメンバー全部にstatic属性が付くんで、
どこかに全部実体を定義しないといけない
しかもnew出来ないんでSingletonなどに使うとかどうよ
0701デフォルトの名無しさん2015/05/20(水) 18:12:17.48ID:A9nl6cPX
>>699
warning出てない?

static class A{} a;
とすると class A の static な a を作れる
0702デフォルトの名無しさん2015/05/21(木) 00:03:55.61ID:ZWg6hJGM
>>699
それはエラーにしてくれと思う
0703デフォルトの名無しさん2015/05/21(木) 17:39:47.55ID:25nDpRt2
ソースファイルを分割してみたのですがエラーが出てしまうので解決方法を教えてもらえませんか?
//main.cu
#include "test.h"
//....変数や関数の定義
int main(){
....
}


//sub.cu
//原因特定のため、空ファイル


//test.h
#ifndef _TEST_H_
#define _TEST_H_
#include <stdlib.h>
......
#include "MT.h"
......//変数や関数の宣言
#endif

これをビルドすると以下のようなエラーがいくつか出ます
1>sub.cu.obj : error LNK2005: "long __cdecl genrand_int31(void)" (?genrand_int31@@YAJXZ) は既に main.cu.obj で定義されています。
これらはすべてヘッダファイルでインクルードしたMT.hの関数についてのエラーなのですが、MT.hのどこがいけないのでしょうか?
MT.h: http://www.sat.t.u-tokyo.ac.jp/~omi/code/MT.h
0704デフォルトの名無しさん2015/05/21(木) 17:52:16.50ID:dyaIJjW8
>>703
MT.hをMT.cへと改名すればいい
0705デフォルトの名無しさん2015/05/21(木) 18:00:03.52ID:ZnRk/DYk
ttp://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/MT2002/CODES/mt19937ar.c
こっち使えよ
0706デフォルトの名無しさん2015/05/21(木) 18:05:18.42ID:2K3lBJSK
>>703
省略した別の箇所で問題あるんでしょ
0707デフォルトの名無しさん2015/05/21(木) 19:43:06.01ID:25nDpRt2
>>704
改名してみましたが変化なしでした

>>705
それからmain()部分を削除してヘッダファイルにしたものが>>703なので、内容は同じです

>>706
ヘッダファイルに問題がないとすれば、そうなりますよね
もう一度重複定義を引き起こす原因を探してみます

ちなみにソースファイルを分割する前は>>703のコードで正常に動作していました
0708デフォルトの名無しさん2015/05/21(木) 19:49:07.19ID:ZnRk/DYk
>>707
インライン化もしてない関数定義をそのまま書いてるヘッダファイルとか害悪しかない
0709デフォルトの名無しさん2015/05/21(木) 19:52:38.69ID:vZPm4Rc0
>>707
MT.cをincludeしてるんじゃないのか?
0710デフォルトの名無しさん2015/05/21(木) 20:40:46.61ID:aNkERRn/
>>707
> ちなみにソースファイルを分割する前は>>703のコードで正常に動作していました
正常に動作しない状況を明記すりゃいいと思うの
0711デフォルトの名無しさん2015/05/21(木) 21:25:38.45ID:25nDpRt2
>>708->>710
レスおりごとうございます
>>709のおっしゃる通りMT.cをインクルードしてました
ヘッダにMT.cの宣言を書くと成功しました!
ところでどうしてMT.hではダメだったのでしょうか?
0712デフォルトの名無しさん2015/05/21(木) 21:28:28.68ID:aNkERRn/
>>711
正常に動作しない状況を明記すりゃいいと思うの
0713デフォルトの名無しさん2015/05/21(木) 21:47:23.79ID:25nDpRt2
>>712
正常に動作しないのは>>703の状態です、正常に動作していたのは全てのコードをmain.cに書いていた時です。
ソースコードを分割したときに、新しく作ったtest.hでMT.hをインクルードしたのですが、
エラーから見るに何故かMT.hが複数回定義されているようなんです
0714デフォルトの名無しさん2015/05/21(木) 21:58:30.69ID:aNkERRn/
>>713
正常に動作しない状況を明記すりゃいいと思うの
プロジェクトファイルまるごと上げるなりしてさ
0715デフォルトの名無しさん2015/05/21(木) 22:08:14.53ID:4twK9jAA
>>703 中の MT.h は宣言どことか (inline なしの)定義込み実質は.cのファイルだし
そんなの複数個所で include すりゃ 関数本体を複数個所で記述してることになるわな
0716デフォルトの名無しさん2015/05/21(木) 22:39:18.89ID:25nDpRt2
>>714
すみません、それは訳あって出来ないんです

>>715
そういうことですか、test.hにインクルードガードつけてるから大丈夫かなと勝手に思ってました
ありがとうございました
0717デフォルトの名無しさん2015/05/21(木) 22:42:25.61ID:4twK9jAA
インクルードガードは1つのソースファイルの中での重複を防ぐだけ

複数のソースファイルで同じものを定義することを防ぐことはできない
0718デフォルトの名無しさん2015/05/21(木) 22:53:28.27ID:aNkERRn/
>>716
さいですか
省略した別の箇所で問題あるんでしょうね
0719デフォルトの名無しさん2015/05/21(木) 23:10:32.20ID:9FtCDoYj
全てのdefineにifdef ifndefのガードつけるわけにもいかんしね。
privateなマクロには長い名前でやるか、namespaceでわけるしかないかと。
0720デフォルトの名無しさん2015/05/21(木) 23:19:02.37ID:aNkERRn/
そういった話じゃない
0721デフォルトの名無しさん2015/05/22(金) 00:35:17.31ID:kgh6e2ez
#pragma once
じゃあダメなのか?
0722デフォルトの名無しさん2015/05/22(金) 00:37:54.58ID:sSDW5yiz
ダメ
0723デフォルトの名無しさん2015/05/22(金) 00:41:16.61ID:kgh6e2ez
何でだよ?
0724デフォルトの名無しさん2015/05/22(金) 00:43:51.17ID:SOsnzLuf
エラーを出してるのはリンカだぞ
同名関数の多重定義でエラーが出てるんだから
イングルードガードうんぬんの話ではない
0725デフォルトの名無しさん2015/05/22(金) 00:50:10.76ID:sSDW5yiz
http://peace.2ch.net/test/read.cgi/tech/1417179292/920
0726デフォルトの名無しさん2015/05/22(金) 01:35:50.67ID:/tbdXvZT
複数のファイルで見つかったらエラーとかクソ言語だな
Cの仮定義とかテンプレートとかインライン関数は重複OKなんだから
全部そうしてくれ
0727デフォルトの名無しさん2015/05/22(金) 01:37:36.26ID:SOsnzLuf
モジュール化とか考えてるみたいだから
そこらへんは17でな
0728デフォルトの名無しさん2015/05/22(金) 02:18:22.88ID:d67ksAby
>>703
そもそも拡張子.cuってなんなんだよw
>MT.hのどこがいけないのでしょうか?
1つのソースからしかinclude出来ないようになってる
これはC/C++の基本を知らない人間が作ったもの
Copyright表記までご丁寧についてるのが笑えるね

メルセンヌツイスタなんてC++ならとっくに標準化されてるから、それを使えばいいのに
0729デフォルトの名無しさん2015/05/22(金) 04:31:42.74ID:2w4Ac3LB
なんでヘッダに実体があるんや...
インクルードガードもあらへんし
イカれぽこちんやで
0730デフォルトの名無しさん2015/05/22(金) 04:41:14.53ID:9VB/htW4
,c,h分割した版あるんでないの
ttp://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/MT2002/mt19937ar.html
0731デフォルトの名無しさん2015/05/22(金) 07:20:16.05ID:N08BjAS9
複数のソースでインクルードするバカの存在は想定外だっただけだろ。
http://www.sat.t.u-tokyo.ac.jp/~omi/random_variables_generation.html#Prepare_MT
0732デフォルトの名無しさん2015/05/22(金) 08:11:14.03ID:3agM3W4p
複数ソースでインクルードすると問題を起こす内容を.hで保存しろと指示する馬鹿は想定外です
0733デフォルトの名無しさん2015/05/22(金) 11:16:33.17ID:JhXx01fe
だな。
順序、回数とは無関係な作りにしないとぉ。
0734デフォルトの名無しさん2015/05/22(金) 12:42:27.79ID:fc6aEkGD
-----main.h
インクルードガード
基本的なヘッダ
自作ヘッダ
インクルードガード
-----main.cpp
#include "main.h"
・・・
-----自作ヘッダ
#include "main.h"
インクルードガード
・・・
インクルードガード
-----自作ソース
自作ヘッダ
・・・

これじゃあかんの?
#pragma onceはファイル毎に判定してしまうし
0735デフォルトの名無しさん2015/05/22(金) 12:56:11.75ID:SWW7bxcC
インクルードガードは一つのソースファイルに同じヘッダファイルが複数回インクルードされるのを止めるもの
問題は複数のソースファイルで同じヘッダファイルをインクルードしてることだからインクルードガード関係なし
0736デフォルトの名無しさん2015/05/22(金) 13:57:20.06ID:JhXx01fe
クラスの実体がヘッダにあるってやつか
0737デフォルトの名無しさん2015/05/22(金) 15:16:38.98ID:zuBke9JK
>>736
言いたいのはクラスの「実装」のことだろうけどそれは問題ない
クラスのメンバ関数はweakシンボル扱いだから
0738デフォルトの名無しさん2015/05/22(金) 17:41:34.00ID:JpUuswh7
>>717
インクルードガードを勘違いしていました、勉強になります

>>728
ほんとですね<random>があるじゃないですか
0739デフォルトの名無しさん2015/05/22(金) 19:21:07.66ID:N08BjAS9
コンパイル、リンクの手順の説明を省略しつつ、メルセンヌツイスタの使用法を説明してるだけだな。
スクショ交えながらの解説が必要なバカは相手にしてないだけ。
0740デフォルトの名無しさん2015/05/22(金) 22:09:43.86ID:JhXx01fe
メルセンヌ数? たぶん違うなw
0741デフォルトの名無しさん2015/05/22(金) 22:15:45.04ID:G/TE2Y1J
周期がメルセンヌ素数なんやで
0742デフォルトの名無しさん2015/05/23(土) 13:19:33.79ID:428FaCy9
>>739
何が問題なのかまだ理解できてないんだね
かわいそうに
0743デフォルトの名無しさん2015/05/23(土) 16:00:21.14ID:339qV2Ey
>>742
MT.hの人の誤算はお前や元質問者のようなバカの存在を見落としていた事。
0744デフォルトの名無しさん2015/05/23(土) 16:45:50.76ID:jiGYxguz
複数ソースからincludeしようとしたってことは、複数系列必要だということだろたぶん
それじゃどっちにしろ>>703のMT.hは使い物にならんよ
0745デフォルトの名無しさん2015/05/24(日) 02:16:40.51ID:oHB/N6d5
つかヘッダに実体がある時点でどうなのよと
0746デフォルトの名無しさん2015/05/24(日) 04:54:20.21ID:aJjTzUu0
用途限定なら、あり。
>>742はそれを理解できないバカ
0747デフォルトの名無しさん2015/05/24(日) 05:50:50.13ID:70SZHwKS
OSSチェック入って
なんで改造して使ってんだって質問来たんで
そのままじゃ使えねーだろボケって返しといた
0748デフォルトの名無しさん2015/05/24(日) 08:42:22.93ID:X+8MvArl
もともとmain関数を含むcファイルだったのにmain関数だけ削除して名前をhファイルにしちゃたのか
ヘッダーの意味が分かってないのか
せめて
#include "魔改造.c"
にするべきだった
0749デフォルトの名無しさん2015/05/24(日) 10:04:38.86ID:hp4TWV5c
VC++のparallel_forで質問なのですが、

vector<string> v;

// ここでvにたくさんの文字列をセットしておき
// vの要素で"AAA"を含むものを探す。

vector<size_t> index_found;
parallel_for(size_t(0), v.size(), [&](size_t i)
{
 if (v[i].find("AAA") != string::npos)
  index_found.push_back(i); // <==この部分
});

for (size_t i = 0; i < index_found.size(); i++)
 printf("%d\n", index_found[i]);

みたいなのを実行したらうまく行ったのですが、質問は、
index_found.push_back(i);
の部分で、排他制御みたいなのはしなくても良いのでしょうか?
0750デフォルトの名無しさん2015/05/24(日) 10:11:37.25ID:8RPh1nzV
いいわけないだろ
0751デフォルトの名無しさん2015/05/24(日) 10:21:10.49ID:hp4TWV5c
>>750
具体的にどういう方法がお勧めか教えてくれよ。初心者の俺に。
0752デフォルトの名無しさん2015/05/24(日) 10:24:09.40ID:1apnNJ5U
書き込みは排他制御しなきゃだめだろjk
0753デフォルトの名無しさん2015/05/24(日) 10:37:53.98ID:2b8e6/09
>>751
なら最初から
------
vector<int> kuso(10); に対して
複数スレッドで
 kuso.push_back(???)
をしたい。どうしたらよいか
----
と訊け
0754デフォルトの名無しさん2015/05/24(日) 10:49:24.78ID:KT9IwsB/
排他制御したらしたでそこがボトルネックになるから、最初から排他制御が不要になるよう
書かないとparallel_forの意味がない。
たとえば、index_foundをあらかじめvの要素数と同じだけ確保してpush_backを使わないように
すれば排他制御なしに並列処理できる。で、最後にその結果をかき集めるreduce処理を行う。
0755デフォルトの名無しさん2015/05/24(日) 10:55:38.47ID:hp4TWV5c
>>754
君は頭がいいな!!!試してみるよ
0756デフォルトの名無しさん2015/05/24(日) 11:22:45.50ID:48VQFXY+
>排他制御したらしたでそこがボトルネックになるから

実測で確認しようとしない低能の典型例
0757デフォルトの名無しさん2015/05/24(日) 11:49:44.11ID:hp4TWV5c
>>754
mutex使って試してみたら排他制御なしのほうが速かったよ。
0758デフォルトの名無しさん2015/05/24(日) 12:36:17.38ID:aA2+5DVb
実測するまでもなく当たり前のこと。
lock freeと排他制御だったら実測してみる意味はあるが。
0759デフォルトの名無しさん2015/05/24(日) 14:42:38.11ID:hp4TWV5c
parallel_forは
https://msdn.microsoft.com/en-us/library/dd728073.aspx?f=255&;MSPPError=-2147217396
を見て勉強中なのですが、ここに出てくる

template <class Function>
__int64 time_call(Function&& f)
{
__int64 begin = GetTickCount();
f();
return GetTickCount() - begin;
}

のFunction&& の部分が分かりません。&が一個の参照ならば理解しているのですが、
&&と二個あるのはどういう意味でしょうか?キーワードを教えてください。
0760デフォルトの名無しさん2015/05/24(日) 14:45:56.50ID:DgyDnKGD
右辺値参照宣言子
0761デフォルトの名無しさん2015/05/24(日) 14:46:32.10ID:aA2+5DVb
右辺値参照
0762デフォルトの名無しさん2015/05/24(日) 14:55:24.12ID:hp4TWV5c
>>760>>761
ありがとうございました。
0763デフォルトの名無しさん2015/05/24(日) 15:33:02.00ID:B5RqJs5f
>>758
あたりまえ?
実測したらロックした方が速かったぞ
https://ideone.com/pPXK9j
検索結果を探すタイプの並行処理でロック回避死守に脳みそ凝り固まるとか労害かよ
0764デフォルトの名無しさん2015/05/24(日) 16:07:49.33ID:/+BEtueg
>>763
そのソース、ロックあり/なしの比較になってないよ
ロックするパス通らないからw
それに>>754が言ってる「index_foundをあらかじめvの要素数と同じだけ確保してpush_backを使わないように」
にすらなってないし
0765デフォルトの名無しさん2015/05/24(日) 17:45:51.61ID:hp4TWV5c
__int64 time_call(Function&& f)
__int64 time_call(Function& f)
__int64 time_call(Function f)
のどれにしても同じように実行できるのですが、&&になっている
理由を教えてください。
0766デフォルトの名無しさん2015/05/24(日) 20:13:20.76ID:N2dPAs5v
ムーブセマンティクスを効かせるため
0767デフォルトの名無しさん2015/05/24(日) 20:24:46.68ID:fxpJY9c4
↑嘘
0768デフォルトの名無しさん2015/05/24(日) 23:06:16.48ID:hp4TWV5c
>>767
本当のことを教えてくれよ
0769デフォルトの名無しさん2015/05/24(日) 23:06:35.78ID:8riMzWGy
ムーブセマンティクスじゃなくて完全転送を行うため
0770デフォルトの名無しさん2015/05/25(月) 00:00:50.32ID:5FE0H/w5
プログラミング初心者です。
今授業でプログラミングを受けてるんですがそこで出た宿題が分かりません。ここで聞いてもいいですか?
0771デフォルトの名無しさん2015/05/25(月) 00:03:01.41ID:xfasVNQ/
一応聞いてやるよ
0772デフォルトの名無しさん2015/05/25(月) 00:03:21.96ID:VZ0J6dfu
聞いてもいい
0773デフォルトの名無しさん2015/05/25(月) 00:09:41.48ID:r8h6U8H4
>>770
質問すれで訊けって言われたのにここで訊くなクズ
0774デフォルトの名無しさん2015/05/25(月) 00:34:15.01ID:5FE0H/w5
質問スレみたいなの沢山あって…
具体的にどのスレですかね
0775デフォルトの名無しさん2015/05/25(月) 00:49:56.48ID:UWpnn+Ou
>>774
C/C++の宿題片付けます 169代目 [転載禁止]©2ch.net
http://peace.2ch.net/test/read.cgi/tech/1432402159/
0776デフォルトの名無しさん2015/05/25(月) 03:18:04.29ID:5FE0H/w5
書き込んできたのでもしよかったらお願いします!
0777デフォルトの名無しさん2015/05/25(月) 08:56:12.26ID:X/lh72Nk
質問させていただきます。
プログラム初心者で、ポーカーのゲームを作成したいと考えています。
そこで、相手プレーヤーに対する勝率を表示させたいと思い、以下のライブラリを追加したいと考えています。
http://www.freecode.com/projects/poker-eval
今までMakefileを使ったことが無く、とりあえずCygwinをインストールしてコマンドを実行しました。
./configure
make install
とすると、コンパイルは完了したようです。
この後、VisualStudio2013からヘッダファイルをインクルードしようとすると、以下のエラーが出ました。
IntelliSense: this declaration has no storage class or type specifier
コンパイル時に作成されたlibフォルダとincludeフォルダへのパスは通しました。
Makefileからのライブラリのインストール方法を教えて頂けないでしょうか。
0778デフォルトの名無しさん2015/05/25(月) 09:07:35.21ID:VZ0J6dfu
Cygwinで、 ./configure make installしたのはCygwin用。VCでは使えない。
0779デフォルトの名無しさん2015/05/25(月) 09:18:47.90ID:gDfMyQ7C
vc用の.vcproj と.sln がちゃんと入ってるじゃねーか。
0780デフォルトの名無しさん2015/05/25(月) 09:26:31.28ID:SeiMBcWL
え?
0781デフォルトの名無しさん2015/05/25(月) 10:13:52.18ID:gTrN+azt
Windowsストアで売りたいとか考えてるなら、そのライブラリは使うべきでは無い
0782デフォルトの名無しさん2015/05/25(月) 14:08:07.67ID:qIuI2+n/
>>769
一般に、
何らかの関数
void func(T &t)
{......}
があった場合、
void func(T &&t)
{......}
に変えても、速度や効率などを無視すれば動作的には同じ結果になると思っても間違い無いでしょうか?
0783デフォルトの名無しさん2015/05/25(月) 14:55:15.30ID:JYCHMnRj
ならないでしょ。
0784デフォルトの名無しさん2015/05/25(月) 18:45:44.68ID:qIuI2+n/
>>783
出来れば、ならない簡単な例を教えてください。
0785デフォルトの名無しさん2015/05/25(月) 19:25:33.05ID:Cc4FT8Vv
右辺値参照の場合、tの参照先を変更できない。
0786デフォルトの名無しさん2015/05/25(月) 19:31:12.91ID:qIuI2+n/
>>785
なるほど。
では、逆なら正しいですか?
0787デフォルトの名無しさん2015/05/25(月) 19:33:43.19ID:Cc4FT8Vv
正しくないでしょ。
0788デフォルトの名無しさん2015/05/25(月) 19:39:19.56ID:qIuI2+n/
>>787
出来れば、正しくない簡単な例を教えてください。
0789デフォルトの名無しさん2015/05/25(月) 19:41:52.63ID:Cc4FT8Vv
参照の場合、tの参照先を変更できる。
0790デフォルトの名無しさん2015/05/25(月) 19:42:03.67ID:RNsqScxN
T&&は右辺値しか受け取れないという事が普通の参照と決定的に違う
いいから右辺値とは何なのかを勉強しろ
0791デフォルトの名無しさん2015/05/25(月) 19:46:46.64ID:8Crjy0ou
>>759からの流れだからテンプレートなんだよね
だから右辺値も左辺値も取れる
0792デフォルトの名無しさん2015/05/25(月) 19:51:22.00ID:Cc4FT8Vv
ああそうなの。
0793デフォルトの名無しさん2015/05/25(月) 19:57:01.99ID:qIuI2+n/
>>791
レスありがとうございます。
右辺値勉強中なのですが、さっぱりわかりません。
>だから右辺値も左辺値も取れる
これは、どういう意味ですか?
782の私の質問が、正しいという意味でしょうか?
0794デフォルトの名無しさん2015/05/25(月) 20:05:46.00ID:8Crjy0ou
template<class T>
void func(T&& t)
とすれば
std::string s = "a";
func(s);
でも
func(std::string("a"));
でも呼べる
上は左辺値を渡してるし下は右辺値を渡してる
0795デフォルトの名無しさん2015/05/25(月) 20:05:53.94ID:RNsqScxN
テンプレートのT&&で左辺値も取れるって変な仕様だよなあ
なんでこんな規格になったのかな?
とにかく右辺値がなんなのかが分からなければ先に進めないよ
0796デフォルトの名無しさん2015/05/25(月) 20:10:46.69ID:qIuI2+n/
>>794
解説有難うございました。
ということは、やはり782は正しくて、
逆は正しくない。
でいいんですよね?
0797デフォルトの名無しさん2015/05/25(月) 20:11:04.31ID:6zM95R3x
テンプレートの場合で左辺値右辺値区別すると書くべきパターンがむちゃくちゃ増えちゃうから
0798デフォルトの名無しさん2015/05/25(月) 20:12:08.65ID:8Crjy0ou
そりゃいちいち右辺値参照バージョンと左辺値参照バージョンの両方のテンプレート関数を書かなくていいようにでしょ
0799デフォルトの名無しさん2015/05/25(月) 20:17:44.37ID:RNsqScxN
>>797、>>798
無茶苦茶増えるかなあ?
両方書かせるようにした方がC++の精神的に正しかったと思うがね
バグの温床になりそうな規格だね
0800デフォルトの名無しさん2015/05/25(月) 20:20:51.53ID:jLXDtTP1
どうして&&という右辺値参照の記述で左辺値にも成りうるウンコ仕様なのかって訊いてるのに
パターンが増えるからとか
文盲にも程がある
0801デフォルトの名無しさん2015/05/25(月) 20:23:11.64ID:RNsqScxN
両方書きたくないならT&だけにすればいいのに
T&&でも左辺値が受け取れちゃうってのは変てこりんすぎるよな
0802デフォルトの名無しさん2015/05/25(月) 20:23:27.69ID:8Crjy0ou
>>799
tは左辺値になるし問題ないと思うけど
右辺値は右辺値参照のまま左辺値は左辺値参照のまま引数の転送ができるstd::forwardがあるしパフォーマンス的にも問題がない
0803デフォルトの名無しさん2015/05/25(月) 20:24:57.50ID:XEKCpmCH
>>801
それだと右辺値が受け取れないでしょ
0804デフォルトの名無しさん2015/05/25(月) 20:29:53.12ID:qIuI2+n/
要するに、T&ならば、T&&としておけば
いいと言う事でしょ?
0805デフォルトの名無しさん2015/05/25(月) 20:30:30.92ID:RNsqScxN
>>803
ああconst T&にしなきゃだめだな
いずれにせよこの辺の型厳密性にはこだわってほしかったな
0806デフォルトの名無しさん2015/05/25(月) 20:35:50.04ID:8Crjy0ou
区別したらvectorのemplace_backの実装大変になるでしょ
variadic templatesを使う意味もなくなる
0807デフォルトの名無しさん2015/05/25(月) 20:45:59.14ID:6zM95R3x
ん、ユニバーサル参照を&&じゃなくて別のやつ(例えば&&&?)にすりゃいいじゃんって話?
確かにその通りやな
0808デフォルトの名無しさん2015/05/25(月) 20:47:47.36ID:XEKCpmCH
そもそも&&で受け取った変数は左辺値になるけど
そのことに文句はないのか
0809デフォルトの名無しさん2015/05/25(月) 21:05:23.50ID:6zM95R3x
受け取ったやつが右辺値になっちゃったら操作できなくない?
0810デフォルトの名無しさん2015/05/25(月) 21:27:28.71ID:qIuI2+n/
誰か782の質問に正しい回答をくれよ!
0811デフォルトの名無しさん2015/05/25(月) 21:36:00.23ID:VTYE0mr4
誰かデタラメ教えてやれよ
0812デフォルトの名無しさん2015/05/25(月) 21:43:48.67ID:gWMMo+ag
私がお答えしましょう

あーだーこーだ言われて答えもでなくてトラブルになるような使い方はやめましょう
0813デフォルトの名無しさん2015/05/25(月) 22:00:12.77ID:WR19eZ4J
>>810
T&&は右辺値も受け取れるためオーバーロード解決で違いが出ます
左辺値しか渡さないなら同じ結果になります
0814デフォルトの名無しさん2015/05/25(月) 22:14:55.38ID:qIuI2+n/
>>813
サンキュウ。
そうだよなあ、俺の理解は正しかった。
&&をマスターしたぞ。
0815デフォルトの名無しさん2015/05/25(月) 22:47:20.83ID:h6RJhRem
c++に関する質問です
ネットからダウンロードしたソースコードをビルドしようとしたのですが、使われているライブラリが新しくなっているためにvirtual関数?が大幅に増えたらしく、コンパイルエラーを起こします
どのようにソースコードを直せばコンパイルが通るのでしょうか
PC初心者な上c++未経験のためどうしたら良いのか分からないのでここに質問しました
0816デフォルトの名無しさん2015/05/25(月) 22:53:17.83ID:YqNyVFLr
コンパイルエラーの内容が分からないうちに
ネットから拾ったソースをコンパイルしようとしない方がいい
まずC++の勉強からしましょう
0817デフォルトの名無しさん2015/05/25(月) 23:02:10.24ID:KhOllmKo
コンパイラバージョン古いライブラリ古いならまずは開発環境をアップすれば
0818デフォルトの名無しさん2015/05/26(火) 07:44:47.52ID:8l7/bLak
c++について少し勉強したところ
コンパイラが教えてくれた関数を全てコピペして少し変更して実装したらコンパイル通りました
0819デフォルトの名無しさん2015/05/26(火) 11:50:22.79ID:9gI1t1nu
class A{
protected:
   int m_i;
public:
   A::A(){}
   A::A(const int i) :m_i(i){}
};

class B :protected A{
public:
//  B::B(const int i) :m_i(i){}    // (1)こちらはダメで
   B::B(const int i){ m_i = i; }    // (2)これなら行ける
};
で、(1)の初期化だとエラーして(2)なら行けるのですがエラーの理由を教えてください。
0820デフォルトの名無しさん2015/05/26(火) 11:56:58.63ID:HAu3kWIC
初期化子で触れるのは自分のメンバだけ
0821デフォルトの名無しさん2015/05/26(火) 12:03:06.19ID:ta09zmeT
B(const int i) : A(i) {}

こうだろ
0822デフォルトの名無しさん2015/05/26(火) 12:26:19.71ID:9gI1t1nu
>>820>>821
出来ました!
0823デフォルトの名無しさん2015/05/26(火) 18:10:47.89ID:+MorV9oJ
kinect用のプログラムをVisual Studio 2013 C++で作っています。SDKのバージョンは1.7 OSはWindows 7 64bitです。
「Kineckt for Windows SDK C++編」という本のサンプル通りに書いてみたのですが

error LNK2019: 未解決の外部シンボル __imp_NuiGetSensorCount が関数 "private: void __cdecl KinectSample::createInstance(void)" (?createInstance@KinectSample@@AEAAXXZ) で参照されました。

このエラーが発生して、NuiCreateSensorByIndex関数と共に動かずパソコンがキネクトを認識しないためプログラムが動きません。
調べたところ関数の定義が行われていないために発生するエラーのようなのですが
NuiGetSensorCount関数はSDKの「NuiApi.h」で宣言されているそうで、インクルードは問題なく行えています。
また、同関数が、使用しているSDKのバージョン1.7で利用可能であることもマイクロソフトの公式サイトから確認しました。
どなたか解決方法をご存知の方はいらっしゃいませんか。


エラーが出ているのは以下の記述の3行目と5行目です
void createInstance()
{

int count = 0;

ERROR_CHECK( ::NuiGetSensorCount(&count));
if (count == 0){throw std::runtime_error("Kinectを接続してください");
}


ERROR_CHECK( ::NuiCreateSensorByIndex(0, &kinect));


HRESULT status = kinect->NuiStatus();
if (status != S_OK){
throw std::runtime_error("Kinectが利用可能ではありません");}
}
08248232015/05/26(火) 18:22:26.35ID:+MorV9oJ
自己解決しました。
ライブラリのフォルダパスの設定だけで終わっていて、
ファイル自体の設定をしていなかったのが原因でした。
まさかこんな初歩的なミスで1ヶ月も停滞していたなんて;;
スレ汚し失礼いたしました。
0825デフォルトの名無しさん2015/05/26(火) 20:22:13.51ID:ScwGU6r4
B::B()はエラーにするコンパイラが
0826デフォルトの名無しさん2015/05/26(火) 21:29:48.23ID:SjDQEX9W
TransparentBlt
で画像の黒い部分を透過しようとしたのですが、
透過されません
エラーもなく画像の表示までは問題なくいきます

考えられる原因を教えていただけますでしょうか
0827デフォルトの名無しさん2015/05/26(火) 21:45:59.92ID:SjDQEX9W
サイズ指定がずれていました
事故解決しました
0828デフォルトの名無しさん2015/05/27(水) 22:38:30.97ID:8CVbZCI0
環境依存OKとのことなので今時windowsで申し訳ないのですが
おしえてください。

ディレクトリを辿ってファイルを検索したいのですが、再帰を使ったド定番なのは
遅くて使えないので、他にどのようなアルゴリズムがありますか?
0829片山博文MZ ◆T6xkBnTXz7B0 2015/05/27(水) 22:40:27.53ID:bhmZkUHl
ファイルの何を検索するの?
0830デフォルトの名無しさん2015/05/27(水) 22:58:25.71ID:8CVbZCI0
ファイル名です
0831デフォルトの名無しさん2015/05/27(水) 23:14:36.62ID:ghFHum5Y
遅くて使えないのではなく828の頭が悪くて使えないだけでは
0832デフォルトの名無しさん2015/05/27(水) 23:19:10.12ID:8CVbZCI0
やっぱりその程度か・・・
0833片山博文MZ ◆T6xkBnTXz7B0 2015/05/27(水) 23:28:34.82ID:bhmZkUHl
ファイル名の検索は、「探索問題」の一種である。
探索方法には幅優先探索、深さ優先探索などがある。
0834片山博文MZ ◆T6xkBnTXz7B0 2015/05/27(水) 23:46:25.23ID:bhmZkUHl
FindFirstFile/FindNextFileは、ワイルドカード(*,?)が使える。
例えばあるディレクトリで、"*abc*"を検索するとabcを含むファイルとフォルダー名が取り出せる。
SearchPathを使えば、実行パスに基づいて実行可能なファイルのパスを検索できる。
0835デフォルトの名無しさん2015/05/27(水) 23:49:41.40ID:8CVbZCI0
もう結構です・・・
0836デフォルトの名無しさん2015/05/27(水) 23:58:45.96ID:bmPyy927
使った事ないが、この辺。
https://msdn.microsoft.com/en-us/library/aa965362(v=vs.85).aspx
0837片山博文MZ ◆T6xkBnTXz7B0 2015/05/28(木) 00:00:44.55ID:BPOchcgZ
実際の検索では様々な戦略が考えられる。例えば、隠しファイルや隠しフォルダーを検索しない、あるいは
ディレクトリの深さが浅いものを優先する、などである。
0838デフォルトの名無しさん2015/05/28(木) 00:04:13.59ID:m+TyS5r+
>>834
PathFileExistsとSearchPathどっちがいい?
0839デフォルトの名無しさん2015/05/28(木) 00:05:50.48ID:AnQe6xX7
>>828
どれくらいの速さが必要なのか
それを言えよ。
0840デフォルトの名無しさん2015/05/28(木) 00:09:40.67ID:N7liwE7G
言ったら言ったで
それって必要なのか?
と始まりそうw
0841デフォルトの名無しさん2015/05/28(木) 00:10:41.10ID:uU2xmjCS
Windows7の検索がクソすぎるからEverythingっていうやつ使い始めたんだけど
これむっちゃ速いのな、どうやってるんだこれ
0842デフォルトの名無しさん2015/05/28(木) 00:12:44.94ID:HB8xXEuW
メモリ上にデータベースおいてるからくっそメモリ食うけどな
0843デフォルトの名無しさん2015/05/28(木) 00:13:57.88ID:Xmw848ss
それはファイル、ディレクトリ捜査が高速ではなく
自前データベース探索が高速なんだろ。
0844デフォルトの名無しさん2015/05/28(木) 00:20:44.37ID:HB8xXEuW
>>840
再帰使うあれってFindFirstFile使うやつでしょ
ぶっちゃけHDDが遅いんだからどのAPI使っても一緒
アルゴリズムの問題じゃない
まぁ1回呼べば次からキャッシュ効いてちょっとは早くなるけど
0845デフォルトの名無しさん2015/05/28(木) 00:20:45.16ID:Cj2LTEMa
ファイルの検索は1秒間に200〜500ファイルぐらいはいけるだろ
それが遅すぎて使い物にならないというんだから
10ミリ秒以内に1万ファイルから検索
ぐらいの要求だろう
0846デフォルトの名無しさん2015/05/28(木) 00:21:21.67ID:SwTFWV/y
sqliteじゃだめ?
0847デフォルトの名無しさん2015/05/28(木) 00:25:00.12ID:zHoqbWBt
FileSystemWatcherで変更を監視しつつ
全ファイルのインデックスを作成
作成し終わったらFileSystemWatcherで検出した変更をインデックスを随時反映
これが最速
0848デフォルトの名無しさん2015/05/28(木) 00:27:26.69ID:HB8xXEuW
C#じゃないぞ
0849片山博文MZ ◆T6xkBnTXz7B0 2015/05/28(木) 00:56:30.79ID:BPOchcgZ
ある特定の場所にファイルがあるか確認したい場合は、
~GetFileAttributesかPathFileExists
0850デフォルトの名無しさん2015/05/29(金) 22:02:27.77ID:/YD9Kb9u
ファイル検索でも
それなりの時間がかかるのに
ワード検索で即返するGoogle の仕組みを教えて下さい
0851デフォルトの名無しさん2015/05/29(金) 22:10:25.63ID:dNgncKxX
独自開発の検索専用FPGA搭載したサーバーで検索してるから
0852デフォルトの名無しさん2015/05/29(金) 22:29:41.96ID:bTG2Z02M
FPGA ってそんなに速いものではないイメージが‥
0853デフォルトの名無しさん2015/05/29(金) 22:32:14.50ID:sCTgru7Q
>>850
Googleにとって都合の良い答えを
返しているだけだから速いのさ。
0854デフォルトの名無しさん2015/05/29(金) 22:34:28.99ID:ZclsxXkV
グーグルは専用ハードの研究はしてるだろうが。
拡大し続ける実用・実働してる検索はいかにコストを下げるかが大事で汎用ハードだろ?
速いより安い重視かと。
0855デフォルトの名無しさん2015/05/29(金) 22:39:03.35ID:ZclsxXkV
検索はある程度以内の時間に収まっていれば、グーグルでは改善不可能の
ネットワークの送受信時間の占める割合が増すから、
検索速度よりもスループット、単位時間あたりの処理件数の重視では?
0856デフォルトの名無しさん2015/05/29(金) 22:43:49.48ID:dNgncKxX
今は専用ハードの時代ですよ
汎用ハードだと性能が出ないから
0857デフォルトの名無しさん2015/05/29(金) 22:46:30.69ID:dNgncKxX
>>854
アホみたいに大量のディスク容量確保するところは汎用で安いの重視
0858デフォルトの名無しさん2015/05/29(金) 23:46:07.15ID:08TmNpAe
>>850
OSのファイルシステム検索は100点の答えを返す
Google は 50点の答えを返す…というかどのくらいの精度かは誰にもわからない
0859デフォルトの名無しさん2015/05/30(土) 00:35:02.54ID:smGPkr6J
囲碁や将棋の達人はもうほとんど考えないで急所を攻め立ててくる
人間の脳ってのは計算量という概念を超えた何かがある
彼らはこれを利用しているんだね
サーバルームではコードに繋がれて謎の液体に漬け込まれた無数の脳が機械には無い直感を活用して多くの計算をすっ飛ばして高速かつ正確にクエリに応答しているんだ
0860デフォルトの名無しさん2015/05/30(土) 00:36:49.92ID:kxccA5tT
Googleの検索速度は俺も興味があるな。異常に早い。
いくらインデックス作ってるからって、あんな速度で検索して、
検索結果を合成できるものなのか?
俺のローカルのハードディスクへのアクセスより早いとか、どうなってんだ?
常に全部オンメモリ状態なのか?なわけないよな。
0861デフォルトの名無しさん2015/05/30(土) 00:47:34.17ID:kxccA5tT
>>859
将棋のあれは、一種のアナログコンピュータだろうな。
脳細胞の数の規模でアナログ回路を組めば、
未だかつて誰も見たことも無いほどの処理能力を持った回路が出来るだろうね。
アナログ回路なんで、正確な計算は出来ないし、部品点数が多いから、
自己修復能力を持った設計にする必要があるだろうが。
ただ、アナログ回路では正確な計算が出来ないので、結果に再現性がなくなって、
デバッグ困難だし、信頼性が無いので、あんま有用性は無いね。
そんなものに生命維持装置やブレーキの制御などのクリティカルなミッションは任せられないから。

あと、脳みそは案外でかい。
CPUがあのサイズだと値段が凄いことになるし電力も半端ないし持ち運び出来ない。
それ考えるとCPUやメモリは小さいサイズでよく頑張っているかと。
0862デフォルトの名無しさん2015/05/30(土) 03:30:20.15ID:aOrY5qKq
>>861
電脳戦イベントにしても絶大な人気を今回もみせた将棋は安泰だね、わが愛すべき囲碁はさっぱりだ‥
0863デフォルトの名無しさん2015/05/30(土) 08:26:22.35ID:OZz3JbS4
世界全体で見れば将棋人口は少なくて囲碁の方が多いから安心しておけ
0864デフォルトの名無しさん2015/05/31(日) 17:46:05.10ID:2zIxob7P
forループでsize_tを使う場合、
size_t i;
size_t ista = 3;
size_t iend = 0;
for(i = ista; i >= iend; i--){
  printf("i=%lu\n", i);
}
ってやったら、3,2,1,0 で終わらないのですが、
どうやるのが正統的な方法なんでしょうか?
0865デフォルトの名無しさん2015/05/31(日) 17:49:29.04ID:t8jPrrOm
size_t i;
size_t ista = 3;
size_t iend = 0;
for(i = ista; i <= ista; i--){
  printf("i=%u\n", int(i));
}
0866デフォルトの名無しさん2015/05/31(日) 18:07:49.74ID:obciJoiE
http://www.codeproject.com/Articles/418776/How-to-replace-recursive-functions-using-stack-and

ここを読んで今再帰関数を非再帰に変換しようとしています
アッカーマン関数はあちこちに例があるので理解出来たのですが、例えば

n = f(f(f(n)));

みたいな入れ子になった関数を非再帰化するにはどう書けばいいのか分かりません
スタックを使うらしいのですが・・・
あと構造体を使わなくてもstd::tupleで行けそうな所までは分かりました
0867デフォルトの名無しさん2015/05/31(日) 18:22:02.13ID:n17ltKvF
Python(15)アッカーマン関数の再帰を除去する
http://p--q.blogspot.jp/2014/06/python15.html



巨大数:アッカーマン関数のC++実装 - clock-up-blog
再帰コールを取り除こう
http://blog.clock-up.jp/entry/2013/12/09/200751
0868デフォルトの名無しさん2015/05/31(日) 18:34:31.42ID:n17ltKvF
一般的な非再帰化法があるのでなく個別対応するしかないんでは?
Ack(x, y)は、こういう風にして数列操作に持ち込むってことで。


http://cdn-ak.f.st-hatena.com/images/fotolife/k/kobake/20131208/20131208231409.jpg
http://blog.clock-up.jp/entry/2013/12/09/200751
0869デフォルトの名無しさん2015/05/31(日) 18:35:28.02ID:2zIxob7P
>>865
レスありがとうございます。提示して頂いた例ですと、
iend=0以外の場合に対応できないように思うんですが。
0870デフォルトの名無しさん2015/05/31(日) 18:38:33.43ID:t8jPrrOm
>>869
「iend <= i &&」を追加
0871デフォルトの名無しさん2015/05/31(日) 18:38:42.31ID:u0MfIENJ
>>869
ssizeにしろ
0872デフォルトの名無しさん2015/05/31(日) 19:01:53.08ID:2zIxob7P
>>871
visual studio だと SSIZE_T っていう奴ですか。
こんな型が有ったなんて知らなかったです。
08738662015/05/31(日) 19:39:05.83ID:obciJoiE
>>867>>868
レスありがとうございます

>>866のページを印刷して読んでいるところですが難しいですね
規則が10個もあるので試行錯誤してみます
0874デフォルトの名無しさん2015/05/31(日) 20:15:47.80ID:obciJoiE
例えばアッカーマン関数はみっともないけどわかりやすく書くとこのようになります

http://ideone.com/cyJz22

使わない変数を省略した物は

http://d.hatena.ne.jp/sune2/20130129/1359429399

みたいですがまだ理解出来てません
0875デフォルトの名無しさん2015/05/31(日) 22:33:21.66ID:n17ltKvF
Ackでスタック使うと再帰版よりも遅いんだが。vectorで代替すると早くなる。

#include <iostream>
#include <time.h>
#include <vector>
#include <stack>
using namespace std;

int Ack(int m, int n) {
if(m == 0) return n + 1; if(n == 0) return Ack(m - 1, 1); return Ack(m - 1, Ack(m, n - 1)); }

int Ack_stack(int m, int n) {
stack<int> S;
do { if (m == 0) { n++;
if (S.empty()) return n;
m = S.top(); S.pop(); continue; }
if (n == 0) { m--; n = 1; continue; }
S.push(m-1); n--; } while(1); }

int Ack_vector(int m, int n) {
vector<unsigned char> S(99999); int curr=0;
do { if (m == 0) { n++;
if (curr==0) return n;
curr--; m = S[curr]; continue; }
if (n == 0) { m--; n = 1; continue; }
S[curr]=m-1; curr++; n--; } while(1); }

int main() {
unsigned long t,x,y,a; x=3,y=12; //x=4,y=1;
t=clock(); a=Ack(x,y); printf("Ack=%d t=%d\n", a,clock()-t);
t=clock(); a=Ack_stack(x,y); printf("Ack=%d t=%d\n", a,clock()-t);
t=clock(); a=Ack_vector(x,y); printf("Ack=%d t=%d\n", a,clock()-t); return 0; }
0876デフォルトの名無しさん2015/05/31(日) 22:36:43.40ID:rfJ0jy0r
非再帰版の良い所はスタックオーバーフローを起こさない所かな
0877デフォルトの名無しさん2015/05/31(日) 23:17:05.08ID:SYNUJXzf
今は攻撃を受ける前提で書かないといけない時代だから。

再帰使わないようにするべきだけど。

状態を保存するのは、スタックを使った再帰が一番楽だからね。
0878デフォルトの名無しさん2015/06/01(月) 00:04:04.13ID:US8qcqOU
攻撃を受ける前提なので再帰を使わないようにするべき
というのはあまりにも頭が悪すぎる
0879デフォルトの名無しさん2015/06/01(月) 02:36:01.84ID:EVE0Mxzw
攻撃受けた際に再帰の場合スタックオーバーフローしてしまうような作り方ならば、
それを非再帰に書き直したところで
(本来ならスタックオーバーフローで落ちるはずのところを)落ちることなく延々と計算を続けるか、
さもなくばスタック以外の別の資源を食いつぶすか。
0880デフォルトの名無しさん2015/06/01(月) 02:41:59.49ID:e+71x0IO
再帰を使っているプログラムにアクセスされる危険がそもそもあるのか?
公開ソフト、市販ソフトが大前提か?
0881デフォルトの名無しさん2015/06/01(月) 02:44:26.58ID:e6TJU9TY
>>880
多くの言語で使われている正規表現ライブラリー
コンパイル時とマッチング実行時で再帰
0882デフォルトの名無しさん2015/06/01(月) 02:47:35.02ID:moAzXMft
abortしやすい方法からabortしにくい方法に変えるセキュリティー対策は概ね事態を悪化させるからな
0883デフォルトの名無しさん2015/06/01(月) 03:54:33.10ID:s3ZcdtNu
>>879
スタックのサイズに制限かけて、オーバーしたらエラー返せばよいだろ。バカじゃね。
だけど、君の言うことにも一理ある。
再帰のネストをカウントする作りにしておけば、再帰でのオーバーフローは防げるからな。
わざわざ自前のスタック用意して、再帰を展開する必要はない罠。
0884デフォルトの名無しさん2015/06/01(月) 05:16:15.75ID:tL4mT88e
再起不能
0885デフォルトの名無しさん2015/06/01(月) 06:09:09.01ID:2kRRaIOr
再帰は出来るだけ展開したほうが良いんだよ。
0886デフォルトの名無しさん2015/06/01(月) 07:30:21.67ID:Han+khKY
>>883
cpsで充分。
0887デフォルトの名無しさん2015/06/01(月) 07:55:07.78ID:CPJ1NbYt
>>883
> スタックのサイズに制限かけて、オーバーしたらエラー返せばよいだろ。
そんなことしたらどこでエラーになるのか予測できないぞ。
ライブラリの深い所でエラーになってエラーも返せずにそのまま死んだりするし。

> 再帰のネストをカウントする作りにしておけば、再帰でのオーバーフローは防げるからな。
まともなプログラムなら当たり前。
0888デフォルトの名無しさん2015/06/01(月) 08:07:11.67ID:2kRRaIOr
>>887
それはむしろ逆なんじゃないの。
ダンプすると経路がわかるから楽だよ。

オートマトンを作る有名どころでマシンスタックを使うのってBoost.Spiritくらいじゃない。
spiritはいろいろな機構を用意しているにもかかわらずデバッグが難しいし。

やっぱり展開したほうが良いんだよ。
0889デフォルトの名無しさん2015/06/01(月) 09:56:47.87ID:m9KYqRgC
>>883
結局同じこと言ってることになるのにわざわざ反論してんのか
0890デフォルトの名無しさん2015/06/01(月) 20:09:55.36ID:EdWu5WFj
再帰は速度考えたら、使えないだろ
0891デフォルトの名無しさん2015/06/01(月) 20:16:11.28ID:bWf+hh2y
>>890
確かにね。
Cは最適化出来ないからリソース喰いになるもんな。
0892デフォルトの名無しさん2015/06/01(月) 20:34:59.55ID:hcIpv0zT
最近は末尾再帰ぐらいはなんとかしてくれる
0893デフォルトの名無しさん2015/06/01(月) 22:03:38.21ID:YbgAEfo1
構造を再帰にすると性能的に使えなくなる可能性はゼロではないが
再帰は性能的にNGと信じているバカが使えないことは事実
0894デフォルトの名無しさん2015/06/01(月) 22:10:35.71ID:EdWu5WFj
imf
0895デフォルトの名無しさん2015/06/02(火) 01:37:25.62ID:fL6KbOvN
いまどき再帰はほんとに使ったらだめだからね。
0896デフォルトの名無しさん2015/06/02(火) 01:43:45.38ID:33LBbjfE
とはいっても平衡二分木を非再帰に開くのは不可能ではないにしても大変だ‥
0897デフォルトの名無しさん2015/06/02(火) 02:13:16.25ID:fL6KbOvN
>>896
再帰使うと楽だからね。
でも駄目だよ。
改修作業時にダメデスナアと言われるからね。
見かけたときは遠慮せずにダメデスナアと言わないといけないよ。
0898デフォルトの名無しさん2015/06/02(火) 02:24:02.15ID:33LBbjfE
>>897
AVL木、赤黒木(いずれも平衡二分木)はスタックの深さを可能なかぎり制限する方向にデータ構造をとるが、
それでも非再帰じゃないとだめなの?

再帰で困るのはスタックあふれだろう?であれば、アルゴリズムでそれが起こりにくいようにするのであれば再帰でも問題ないのでは?
0899デフォルトの名無しさん2015/06/02(火) 02:35:44.55ID:fL6KbOvN
>>898
そりゃ良くないプログラミング慣習とみなされているんだから、変な烙印押されたくなければ
あえてそこを通るメリット無いだろ。
0900デフォルトの名無しさん2015/06/02(火) 02:36:39.85ID:2KJ1xdoq
起こらないと起こりにくいでは違うからなぁ
0901デフォルトの名無しさん2015/06/02(火) 02:38:29.53ID:NMFreSYT
関数型だと再帰しかつかえん
0902デフォルトの名無しさん2015/06/02(火) 05:35:07.07ID:Ima7+3bH
スタックを自分で用意してもええんやで
0903デフォルトの名無しさん2015/06/02(火) 08:27:14.10ID:cddAA14C
>>899
Cの能力が低いだけ。
0904デフォルトの名無しさん2015/06/02(火) 10:05:54.83ID:MVNZCtkp
>>897
じゃあ、std::mapとか禁止にしてるの?
0905デフォルトの名無しさん2015/06/02(火) 10:40:13.94ID:nAzzGm8u
再帰で困るのはバカが一つ憶えで繰り返しにしろと粘着する事。
0906デフォルトの名無しさん2015/06/02(火) 11:23:38.91ID:S9CQ5dEl
電卓なんかの 式 項 因子 の3重再帰もループに展開してるのかなぁ
0907デフォルトの名無しさん2015/06/02(火) 11:42:58.92ID:nPOqT+91
コンパクトな再帰のコードをループに展開したらCPUのキャッシュに収まらなくなってむしろ遅くなることが多々ある
0908デフォルトの名無しさん2015/06/02(火) 12:45:13.12ID:lxmN6vtG
>>906
関数電卓ならわかるが、普通の電卓なら再起いらんやろ
0909デフォルトの名無しさん2015/06/02(火) 15:56:30.02ID:SghPEm1e
>>908
みんな間違わずにここまできたのに
お前だけ間違ったな
肝の部分に誤字入れるプログラマは
一割リストラなんかのときに候補になるタイプやろな
0910デフォルトの名無しさん2015/06/02(火) 17:56:31.34ID:GRJ74vYh
誤字でしか指摘することができないとはみじめ
0911デフォルトの名無しさん2015/06/02(火) 20:05:11.24ID:1H3cOO/K
本題で語れないからじゃね
0912デフォルトの名無しさん2015/06/02(火) 20:06:59.34ID:3B1g3coL
さすがQZ能力が低いといわれ揚げ足取りでしか攻撃できない
ここはお前がオナニーできる場所ではないんやな
0913デフォルトの名無しさん2015/06/02(火) 20:13:11.06ID:1H3cOO/K
お前は宿題スレから出てくんな
0914デフォルトの名無しさん2015/06/02(火) 20:30:49.97ID:mpqWTiJ6
std::stringstream s1;
std::stringstreem s2;

『2行目だけエラーになるんですけど原因が分からないんです』
「そこ打ち間違えてるよ」
「誤字だね」
『え?どこですか?』
「streamのところ」
「eaになるはずがeeになってる」
『え?どこのことですか?』
「ここだよ(指差す)」
『あれ?さっきまでeaだったはずなのに、今eeに変わった。何をしたんですか?』


というのを毎日繰り返してる新人がいたんだけど、何かの病気だったのでしょうか?
0915デフォルトの名無しさん2015/06/02(火) 20:35:18.93ID:MiO5h7Jd
お前が手で触るだけでPCの文字を書き換える技術を持ってるだけのこと
0916デフォルトの名無しさん2015/06/02(火) 20:37:03.94ID:mpqWTiJ6
>>915
登場人物は二人じゃないんだって
0917デフォルトの名無しさん2015/06/02(火) 20:41:40.97ID:mpqWTiJ6
std::stringstream s1;
std::stringstreem s2;

A『2行目だけエラーになるんですけど原因が分からないんです』
B「そこ打ち間違えてるよ」
C「誤字だね」
A『え?どこですか?』
D「streamのところ」
E「eaになるはずがeeになってる」
A『え?どこのことですか?』
F「ここだよ(指差す)」
A『あれ?さっきまでeaだったはずなのに、今eeに変わった。何をしたんですか?』
0918デフォルトの名無しさん2015/06/02(火) 22:44:28.80ID:xvNBkK8I
超能力者はF
0919デフォルトの名無しさん2015/06/02(火) 22:57:02.18ID:PNCKnZOF
Clangはそういう場合もしかしてstd::stringsteamじゃね?
って教えてくれるから便利だよな
0920デフォルトの名無しさん2015/06/02(火) 23:52:06.88ID:2KJ1xdoq
ワロタ
0921デフォルトの名無しさん2015/06/03(水) 00:11:03.37ID:TFU5sR5O
googleのもしかしてよりアホだな
0922デフォルトの名無しさん2015/06/03(水) 00:34:41.72ID:B+SiK07R
人数の多いプロジェクトだとだいたい誤字多すぎる奴が必ず混ざるのだが
指摘されてすぐ場所を見つけ出せるタイプと
いくら指摘されてもなかなか見つけ出せないタイプに二分される
どちらの方がより病んでるのか
0923デフォルトの名無しさん2015/06/03(水) 01:37:24.76ID:nXuY2PD3
Eclipse使ってるとstringstreamの所にマウスを合わせるとstringstreemが灰色にならないから
すぐに分かるよね
0924デフォルトの名無しさん2015/06/03(水) 09:04:02.10ID:QKkpvy6H
英単語のスペルミスならコンピューターの手助けで救われそう
a.x += b.x;
a.y += b.y;
a.z += b.x;
こういう打ち間違えを大量生産する人をどうやって救えばいい?
そいつ出社拒否で辞めたので救い方分かってももう仕方ないけど
0925デフォルトの名無しさん2015/06/03(水) 09:05:29.22ID:TFU5sR5O
a += b;で済むようにする
0926デフォルトの名無しさん2015/06/03(水) 10:19:28.23ID:lx/gBG/Q
>>925
それを実現する関数の中身のことだろ
0927デフォルトの名無しさん2015/06/03(水) 10:23:22.60ID:lguHdY/i
>>926
XYZ& operator+=(const XYZ&b) {
XYZ& a = *this;
return a += b;
}

こうすりゃ済むだろ
0928デフォルトの名無しさん2015/06/03(水) 10:27:09.00ID:hYqfxVSD
あのね
0929デフォルトの名無しさん2015/06/03(水) 10:37:57.53ID:TFU5sR5O
>>926
strong typedefを使う
0930デフォルトの名無しさん2015/06/03(水) 12:48:28.92ID:Uef3YIi+
>>924 みたいな奴は単体テストをちゃんとやれば大抵見つかるからいいけど、>>927 みたいなアホはたぶん一生治らないから救いようがない
0931デフォルトの名無しさん2015/06/03(水) 13:38:32.62ID:mFN7sgFN
テストで済むなら質問者もそうそう聞いてこないだろ
>>929が正解
0932デフォルトの名無しさん2015/06/03(水) 14:10:59.57ID:NXHMQekm
>>924
その打ち間違いがどういうプロセスで発生するか調べる
一人だけの問題ならクビ
0933デフォルトの名無しさん2015/06/03(水) 14:24:59.94ID:hYqfxVSD
>>924みたいなミスは誰でもやると思うけどあまり頻繁にやる奴は
性格的にプログラミングに不向きだな
strong typedef使ったとしても何かエラー出たから訳わからんままに強制キャストとかやるタイプ
0934デフォルトの名無しさん2015/06/03(水) 16:10:26.05ID:mFN7sgFN
まあ発生原因はコピペだろうけど
0935デフォルトの名無しさん2015/06/03(水) 16:17:27.15ID:K7IW/JRS
a.x += b.x; をタイプ さらにコピーっしてペースト2回
左辺を y と z に置き換えて
右辺を y に置き換えている途中に 割り込み 作業を忘れる
0936デフォルトの名無しさん2015/06/03(水) 18:51:25.27ID:QadS+ygN
矩形コピーを教える
0937デフォルトの名無しさん2015/06/03(水) 20:58:25.77ID:HweAEHWW
何を矩形コピーするんですか?
0938デフォルトの名無しさん2015/06/03(水) 21:22:01.70ID:TFU5sR5O
a.x
a.y
a.z
を矩形コピーして後でa行だけbに変える
0939デフォルトの名無しさん2015/06/03(水) 21:34:30.08ID:oQy9zvF5
ほらもう間違えてる
変えるのは列だろ
0940デフォルトの名無しさん2015/06/03(水) 22:45:20.45ID:UaqAMmT5
そこかよ
0941デフォルトの名無しさん2015/06/03(水) 22:50:39.09ID:QDozX67x
strong typedef使って回避って具体的にどうやるの?
0942デフォルトの名無しさん2015/06/03(水) 22:54:54.30ID:xLp6v6Vl
struct Hoge {
float foo;
...


struct Vec3 {
Hoge x;
Fuga y;
Piyo z;}


これで良いだろ
組み込み型そのまま使って間違えるバカは死ねよ
0943デフォルトの名無しさん2015/06/03(水) 22:59:36.06ID:a6dWi2Gi
>>942
それテンプレートクラスにするときどうするの?
0944デフォルトの名無しさん2015/06/03(水) 23:03:31.24ID:QDozX67x
a.xの値でなんか計算とかしたくなったときはa.x.fooを使う感じでやるのかな?
0945デフォルトの名無しさん2015/06/03(水) 23:09:00.30ID:RqULJtkt
誤字多いのと出社拒否は関係あるのか?
俺が過去に見た誤字凄いのは2人だが、2人とも音信不通になってから辞めてるし
0946デフォルトの名無しさん2015/06/03(水) 23:12:58.54ID:hYqfxVSD
ちょっと複雑な計算(回転とか)やる時やたら汚い書き方になって余計に間違い増えそう
0947デフォルトの名無しさん2015/06/03(水) 23:50:56.31ID:GxRvASag
昔そういう人型地雷と同じチームだったことがある
幸いなことに自分が触った箇所すべてにきちんと署名してくれてたから被害は最小限におさえられた
0948デフォルトの名無しさん2015/06/04(木) 00:49:19.21ID:que7T37R
誤字多すぎるのは

注意障害
識字障害
アスペルガー
など

誤字が許されない職業に就くのはストレスきつそう
0949デフォルトの名無しさん2015/06/04(木) 01:22:52.51ID:h6VJ493e
以上QZの回想でした
0950デフォルトの名無しさん2015/06/04(木) 05:55:06.63ID:RDJApZF9
>>945
パワハラじゃないのか
やってる本人は気づいてないのかもしれないが
特定の相手に対してだけ口調や態度が違う奴はいる
脇から見てるとこれはパワハラだなーと思うが
上司も注意せず黙認してる
で、数か月後にやられてた奴は退職した
0951デフォルトの名無しさん2015/06/04(木) 09:21:13.32ID:+G3eSCOh
>>950
classと書くべきところの3つに1つを書き間違えて
しかもどこが間違えているかコンパイラに教えられても間違いが分からない人なら
いつまでも終わらないコンパイラの指摘をパワハラだと思うかもしれないな
0952デフォルトの名無しさん2015/06/04(木) 10:52:49.28ID:+93OvXiE
>>941
問題箇所を洗い出すために、同じintを別の名前で幾つか再定義して
代入間違いをコンパイラに探させるのさ
0953デフォルトの名無しさん2015/06/04(木) 11:21:07.39ID:YIi7L05j
それ無理じゃない?
typedef int xint;
typedef int yint;

struct foo { xint x; yint y; }

foo a, b;
b.x = a.y;

ってことでしょ?
0954デフォルトの名無しさん2015/06/04(木) 11:21:33.56ID:YIi7L05j
セミコロンぬけてら…
0955デフォルトの名無しさん2015/06/04(木) 11:40:14.48ID:sOd8V65O
>>952
アフィン変換するときどうするの?
0956デフォルトの名無しさん2015/06/04(木) 11:40:31.84ID:UJ+uasTN
>>953
それは単なるtypedefだろ
0957デフォルトの名無しさん2015/06/04(木) 11:52:18.34ID:cR6kwSut
>>953
Hoge, Fuga, Piyoを引数にとる演算子を定義するんだろ
でも、そう言う奴は他のパターンでtypoするから本質的な解決にならない
0958デフォルトの名無しさん2015/06/04(木) 11:57:36.20ID:PAT1ASPp
strong typedef だと b.x = a.y; はエラーで引っ掛ける
using xint int;
using yint int;

けど アフィン変換(マトリックスとの積) や 外積のような クロスするのにはつかえにゃい
0959デフォルトの名無しさん2015/06/04(木) 12:41:57.57ID:gZNE2gL+
2点間の距離求めるだけでもクソめんどくさいことになるだろ
0960デフォルトの名無しさん2015/06/04(木) 12:55:19.65ID:YIi7L05j
>>957
構造体でintをラップするっていうのは上にもあるしわかるんだけど、
「同じintを別の名前で幾つか再定義して」っていうのがわかんない
typedef以外でなんかあるのかなって
0961デフォルトの名無しさん2015/06/04(木) 13:17:39.63ID:bj/ZV+Ck
変換とか長さ出したりとかを始めあらゆる演算がreinterpret_castだらけになって、別のミスが検知できなくなりそう
0962デフォルトの名無しさん2015/06/04(木) 14:29:07.54ID:MAvS6vSs
>>960
typedef と strong typedef の違いはわかる?
0963デフォルトの名無しさん2015/06/04(木) 15:07:24.49ID:YIi7L05j
>>962
typedefは型に単に別名つけるだけで、
strong typedefはそれこそ実質中身同じだけど別の型として扱われるものを作るってことだよね?
>>942のようにやるやり方はわかるんだけど、
>>952や>>958のようなもっとシンプルにやる方法がわからない
0964デフォルトの名無しさん2015/06/04(木) 15:18:55.03ID:gZNE2gL+
strong typedef案は却下
結局単体テストをしっかりやるしかない
0965デフォルトの名無しさん2015/06/04(木) 16:34:48.41ID:AoHnIgTp
>>964
3Dレンダリングなんてケースによって通るコード変えて速度稼ぐこともあり
間違えてz=xのようなミスをしたところがレアケースでしか通らない箇所なら
単体テストに頼るだけで済む保証がない
0966デフォルトの名無しさん2015/06/04(木) 19:42:25.99ID:2Og4H4kW
そこまでして速度稼ぎたいなら、SSEとかも使うんでしょ。
そしたら、strong typedefどころか、型チェックすらなくなるわけで。
0967デフォルトの名無しさん2015/06/04(木) 20:06:58.10ID:gZNE2gL+
>>965
それは単体テストがいい加減なだけでは?
単体テストで保証できないなら保証する方法なんてないね
0968デフォルトの名無しさん2015/06/04(木) 22:26:09.17ID:TE7tpUku
>>967
単体テスト以外の方法は存在しないと?
0969デフォルトの名無しさん2015/06/04(木) 22:43:03.68ID:Xun5BCRH
単体テストでもミスするから根本的な解決案にならない
0970デフォルトの名無しさん2015/06/04(木) 23:03:26.29ID:2q40Rd1k
>>967
近年連続して見つけ出されているopensshの不具合は
「ソースを読解する」という方法で見つかっているんですけどね
テストとかじゃなくて
0971デフォルトの名無しさん2015/06/04(木) 23:06:57.44ID:RgXKwZP6
とあるライブラリの抜粋なんですが

class A{
public:
 virtual void setfunc (void (*convert) (float value, char *string));
private:
 void (*func) (float value, char *string);
};

void A::setfunc (void (*convert) (float value, char *string)){
 func = convert;
}


これのsetfuncに関数Bを渡したいんですが、どうすれば良いんですかね
下の書き方だとプログラム走らすとエラーで落ちてしまう


void B (float value, char *string){
}

int main(){
 A *a;
 a->setfunc(B);  //Bの渡し方が分からんです
}
0972デフォルトの名無しさん2015/06/04(木) 23:12:30.16ID:S72OsMlQ
Cを基礎から勉強しなおしましょう
0973デフォルトの名無しさん2015/06/04(木) 23:13:02.97ID:l7sqjWQu
単体テストはほとほどでいい。
多額の予算かけて単体テストを豪華にするくらいなら
セキュリティコンサルやコードレビュー屋に単発依頼した方が安くて検出率が高い。
09749712015/06/04(木) 23:19:35.16ID:RgXKwZP6
なるほどa = new (A);が抜けてるだけか。失礼しますた・・
0975デフォルトの名無しさん2015/06/05(金) 01:32:20.58ID:cKja1wy1
へぇVisual Studioだとこの書き方ダメなんだ 
char a = 0b00001010;
組み込みだと当たり前な書き方なのに不便やなぁ
0976デフォルトの名無しさん2015/06/05(金) 02:48:56.19ID:lcbUzzij
そのうち書けるようになるさ
0977デフォルトの名無しさん2015/06/05(金) 05:38:39.92ID:hFKT/HtA
8進数にbと書いても通るようになるとな
0978デフォルトの名無しさん2015/06/05(金) 06:07:23.70ID:w/AmbAsN
先頭0は8進値
先頭0xは16進値
途中A〜Fがあったら16進値にしたらいいのにな
0979デフォルトの名無しさん2015/06/05(金) 06:10:08.41ID:cghofKPB
14で仕様に入るでしょ
0980デフォルトの名無しさん2015/06/05(金) 06:52:09.86ID:3VeVYHLB
途中にA-Fが無いけど16進にしたい時は0xつけるハメになる
使い分けなきゃならないので醜い
0981デフォルトの名無しさん2015/06/05(金) 12:46:50.00ID:PPi1ASxW
よく質問されるのが10進を16進に変換するってどういう意味なんですか?
int i = 10;
int i = 0xa;
も同じじゃないですか?

なのに変換とは?
0982デフォルトの名無しさん2015/06/05(金) 13:02:53.35ID:jlghS53x
文字列変換の話でしょ
0983デフォルトの名無しさん2015/06/05(金) 13:35:19.87ID:PPi1ASxW
文字列に10進とか16進ってあるんですか?
0984デフォルトの名無しさん2015/06/05(金) 16:24:25.16ID:JR/KFBtw
"10" 10進数
"0xa" 16進数
0985片山博文MZ ◆T6xkBnTXz7B0 2015/06/05(金) 16:33:34.95ID:DXaZxPH6
文字列が表す数値はstrtol/strtoulで読み込める
0986デフォルトの名無しさん2015/06/05(金) 16:46:06.98ID:oXea6eYz
>>984
"10" という文字列が10進数を意図したものであるとは限らない
0987デフォルトの名無しさん2015/06/05(金) 17:03:00.66ID:JR/KFBtw
文字列で10進数はって例を聞かれたから答えただけで
どういう規定で変換するのはプログラマー次第だろ
0988デフォルトの名無しさん2015/06/05(金) 17:11:14.24ID:YtaxjIlA
>>986
10進数を意図した例として出されただけで、何時でも何処でも誰でも10進数として
解釈すべきだとは書かれていないよね?(´・ω・`)
0989デフォルトの名無しさん2015/06/05(金) 18:08:09.69ID:9pqkhIHE
>>987
「"10" という文字列が10進数を意図したものであるとは限らない」が間違いであると言いたい?
0990デフォルトの名無しさん2015/06/05(金) 19:39:14.33ID:YjFFpKOb
クソコテの自演に反応するなよ
0991デフォルトの名無しさん2015/06/05(金) 21:58:47.63ID:Em9JMBRM
次スレは?
0992デフォルトの名無しさん2015/06/05(金) 22:16:57.57ID:cKja1wy1
n次元配列って5次とか10次とかやっても良いんですか
0993デフォルトの名無しさん2015/06/05(金) 22:56:37.08ID:zIdlcfi4
>>992
ok
0994デフォルトの名無しさん2015/06/05(金) 22:57:37.94ID:PPi1ASxW
やらないほうが賢明です。
会社で馬鹿でかい多次元配列を作ってスタックにつめないからといって
コンパイラのせいにしてるバカのようになってほしくないです
0995デフォルトの名無しさん2015/06/05(金) 23:20:45.97ID:cKja1wy1
配列数が大きくなければ大丈夫って事かな。
合計float[6000]ぐらいなんでやってみまつ
0996デフォルトの名無しさん2015/06/05(金) 23:23:47.49ID:4/4JvIu2
スタックに積めないのを次元のせいにしているバカ?
0997デフォルトの名無しさん2015/06/05(金) 23:25:22.23ID:JJJ2g9Sl
雑音多いわ
質問もできねえ
0998デフォルトの名無しさん2015/06/05(金) 23:29:03.04ID:pbJTQx9M
次スレ

【初心者歓迎】C/C++室 Ver.96【環境依存OK】
http://peace.2ch.net/test/read.cgi/tech/1433514467/
0999デフォルトの名無しさん2015/06/05(金) 23:31:53.77ID:JJJ2g9Sl
>>998
乙
1000デフォルトの名無しさん2015/06/05(金) 23:42:58.76ID:DXaZxPH6
とどめだ!
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。