C++相談室 part99
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2013/02/21(木) 17:37:08.31ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレに
お願いします。
前スレ
C++相談室 part98
http://toro.2ch.net/test/read.cgi/tech/1347964922/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.79【環境依存OK】
http://toro.2ch.net/test/read.cgi/tech/1341052801/
■長いソースを貼るときはここへ。■
http://codepad.org/
http://ideone.com/
0159デフォルトの名無しさん
2013/02/28(木) 09:56:46.26こうすればコピーしか初期化出来なくなるので正常動作するわけだ
0160デフォルトの名無しさん
2013/02/28(木) 10:26:03.940161デフォルトの名無しさん
2013/02/28(木) 10:29:53.350162デフォルトの名無しさん
2013/02/28(木) 10:53:28.22右辺値禁止したければオーバーロードをdeleteするのが正道なんだよなあ
0163デフォルトの名無しさん
2013/02/28(木) 10:56:00.160164デフォルトの名無しさん
2013/02/28(木) 10:58:09.340165デフォルトの名無しさん
2013/02/28(木) 11:02:29.680166デフォルトの名無しさん
2013/02/28(木) 11:11:19.32人事部にお問い合わせください
0167126
2013/02/28(木) 12:34:17.03なるほど、
>C c(*s);
で生成されたオブジェクト '*s' は一時オブジェクト、コンストラクタのコールが終わると消えてC::printf() までは生きていないと。
http://toro.2ch.net/test/read.cgi/tech/1359924126/294 ではよくある返り値の一時オブジェクトが話題でしたが、今度は引数の一時オブジェクト例とは、感謝。
>なんだQか
どうしてそう思ったの?
0168デフォルトの名無しさん
2013/02/28(木) 12:57:18.100169デフォルトの名無しさん
2013/02/28(木) 14:06:33.92いいんだって
それより文法を正しく理解しているかどうかだ
0170デフォルトの名無しさん
2013/02/28(木) 14:13:56.71std::mt19937 myrand();
の()内に乱数の種を入れることはわかったのですが、
ここではsrand()のように、種を入れる初期化用関数は存在しないのでしょうか?
初期化用の処理にsrand()を入れていたので、どうしていいのか戸惑っています
0171デフォルトの名無しさん
2013/02/28(木) 14:18:29.060172デフォルトの名無しさん
2013/02/28(木) 14:21:31.690173デフォルトの名無しさん
2013/02/28(木) 14:53:54.98なに言ってるんだ?
>constの参照はコンストラクタで初期化しないとコンパイルエラーになる
当たり前だカス。ドヤ顔でいうことじゃないだろ。
お前がド素人丸出しなんだよ。
それに何よQって?知らんよそんなもん
0174デフォルトの名無しさん
2013/02/28(木) 15:43:53.570175デフォルトの名無しさん
2013/02/28(木) 15:57:39.44顔真っ赤にしてファビョらなくてもいいぞ老害
0176片山博文MZパンク ◆0lBZNi.Q7evd
2013/02/28(木) 20:19:56.19static unsigned m_seed;
std::mt19937 m_rand;
public:
MyRand() : m_rand(m_seed) {
}
...
};
unsigned MyRand::m_seed;
void MySRand(unsigned seed) {
MyRand::m_seed = seed;
}
0177デフォルトの名無しさん
2013/02/28(木) 20:20:16.83そんな奴が就くからドカタ職業になるんだろうなと思う
いや、ドカタ職業だから精神壊れている奴ぐらいしか就かないのかも
0178デフォルトの名無しさん
2013/02/28(木) 21:02:19.68friend か public が必要だけどね。
0179デフォルトの名無しさん
2013/02/28(木) 21:26:56.69精神の壊れ方にもいろいろ種類があるけど、他人に迷惑を掛けない壊れ方(自己破壊的)と、
他人に迷惑を掛けまくり(他罰的)な壊れ方の二種類に大別出来る。
前者は統失・双極性障害・うつ病、後者は人格障害がほとんど。後者はアスペではないかと
思う人もいるかもしれないが、それは単にアスペが人格障害を伴っている場合が多いから。
0180デフォルトの名無しさん
2013/02/28(木) 22:20:16.610181170
2013/02/28(木) 23:19:28.02いえそういうことではなく、乱数クラス内に種を渡す用のメンバ関数がないのかなと思ったのです
>>176>>178
ありがとうございます。しかしかえって使いにくくなっているような気がしますが…
皆さまありがとうございました、自己解決しました。
ttp://ideone.com/6QYWl1
例えばあるクラスで使う場合、コンストラクタで初期化をするのはどうすればいいのかと思っていたのですが、
このようにすればいいのですね。
0182デフォルトの名無しさん
2013/02/28(木) 23:19:46.26分類せずに人を見る事が可能だと思ってるのか?
プログラムで言えばソートアルゴリズムにいろいろあるようなもんだ
0183デフォルトの名無しさん
2013/02/28(木) 23:24:56.87解決したようだけど一応、種の再初期化をしたいってことならseedメンバ関数がある。
0184デフォルトの名無しさん
2013/02/28(木) 23:35:49.160185デフォルトの名無しさん
2013/02/28(木) 23:56:09.93これは流行る
0187126
2013/03/01(金) 02:42:21.240188デフォルトの名無しさん
2013/03/01(金) 02:46:46.780189126
2013/03/01(金) 03:16:18.13>>127を例にとると
C::C(const std::string& s) : cs(s) {}
に対して C c(*s); としたときにスタック上に展開される *s の内容と
C::C(std::string& s) : cs(s) {}
に対してのそれとが異なるかどうか?
あるいは一般的に const をつけるかつけないかで、スタック上に展開される内容が異なるかどうか、気になるのです。
0190デフォルトの名無しさん
2013/03/01(金) 04:15:14.40その場合constは魔法でも何でもない
ただ書き換えのエラーチェックがコンパイル時に為されるだけ
0191デフォルトの名無しさん
2013/03/01(金) 04:16:09.940192デフォルトの名無しさん
2013/03/01(金) 08:01:03.66気になるなら自分でアセンブリ吐かせて見ろよ。
0193デフォルトの名無しさん
2013/03/01(金) 10:19:49.22強いて言えばリファレンスをメンバに持たせるとそのメンバはコンストラクタで必ず初期化しないと
コンパイルが通らない位の違い
0194デフォルトの名無しさん
2013/03/01(金) 20:25:00.31ho(T&& ge)の場合、引数にはポンタ以外何か渡しているのか
0195126
2013/03/01(金) 21:49:39.03http://toro.2ch.net/test/read.cgi/tech/1354116880/806 でそう書いたらぼろくそだった‥‥
0196デフォルトの名無しさん
2013/03/01(金) 23:32:58.04そこであなたが言ってることはほとんど正しいと思うけどね
ボロクソ言ってる奴は何も考えていないシッタカ素人としか思えない
参照がポインタconstの糖衣構文とは言い切れないのって
const参照による一時オブジェクト束縛くらいじゃないの?
そうじゃないって言うなら、そうじゃない例を挙げて欲しいものだよ
0197デフォルトの名無しさん
2013/03/01(金) 23:46:01.850198デフォルトの名無しさん
2013/03/02(土) 00:30:45.10混同している輩には呆れる
0199デフォルトの名無しさん
2013/03/02(土) 00:48:26.960200デフォルトの名無しさん
2013/03/02(土) 01:00:10.530201デフォルトの名無しさん
2013/03/02(土) 01:32:42.820202デフォルトの名無しさん
2013/03/02(土) 02:50:34.74混同している、とはどういう意味?今現在混同している事例が進行中なの?
0203デフォルトの名無しさん
2013/03/02(土) 03:00:58.98その前にお前は敵なのか味方なのかそれをはっきりさせろ
0204デフォルトの名無しさん
2013/03/02(土) 03:02:24.29無能の言うことはいつもこれ
0205デフォルトの名無しさん
2013/03/02(土) 09:35:00.440206デフォルトの名無しさん
2013/03/02(土) 10:10:30.200207デフォルトの名無しさん
2013/03/02(土) 11:45:49.730208デフォルトの名無しさん
2013/03/02(土) 12:26:11.800209デフォルトの名無しさん
2013/03/02(土) 13:22:24.760210デフォルトの名無しさん
2013/03/02(土) 13:58:05.02APIスレみたいになると楽しいよな
0211デフォルトの名無しさん
2013/03/02(土) 16:14:45.45今、次のようなコードがあるとします。
wchar_t * src = L"aabbcc";
wchar_t dest[3];
size_t lenToCpy = 2;
wcsncpy_s(dest, 3 * sizeof(wchar_t), src, lenToCpy);
dest[6] = L'\0';
"aa"だけコピーしたいんですけど。
使い方はこれであってますか?
なんか、wcsncpy_sでsrcの長さ(この場合6文字xsizeof(wchar_t) = 12バイト)だけdestが0xfeで埋められてから
len文字分だけコピーされているように見えます。@VS2008
なのでdestでヒープが壊れるってデバッグ終了時に言われるんですが。。
(この例ではdestはローカルだけど、実際にやってるコードだとヒープです。)
0212デフォルトの名無しさん
2013/03/02(土) 16:19:47.41>dest[6] = L'\0';
ダメ
0213デフォルトの名無しさん
2013/03/02(土) 16:21:10.46あ、すみません。。
そこは2chに書くときに治し忘れてました。。dest[2]=L'\0'って読み替えてください。。
本当に申し訳ない。
0214デフォルトの名無しさん
2013/03/02(土) 16:24:00.68>この動作を無効にするには、_CrtSetDebugFillThreshold を使用します。
正常動作ですが何か
0215デフォルトの名無しさん
2013/03/02(土) 16:45:35.26え?
FEで埋めるのはいいんですが、与えられたバッファサイズを超えて埋めるのってどうなんですか?
なんか追っかけていくと最後に_FILL_STRING(_DEST, _SIZE, _SIZE - available + 1);
って処理があって、これがバッファをバーンと壊してますね。
その直前まではいい感じなのに。
0216デフォルトの名無しさん
2013/03/02(土) 16:45:35.54マニュアルちゃんと読めよ
0217デフォルトの名無しさん
2013/03/02(土) 16:46:40.723 * sizeof(wchar_t) の * sizeof(wchar_t) が要らない
0218デフォルトの名無しさん
2013/03/02(土) 16:46:55.73配列ならテンプレートが勝手に要素数埋めてくれる
0219デフォルトの名無しさん
2013/03/02(土) 16:47:48.62ありがとうございます!
やっぱり使い方が間違っていたんですね。
スレ汚しすみませんでした
0220デフォルトの名無しさん
2013/03/02(土) 16:58:21.750221デフォルトの名無しさん
2013/03/03(日) 09:07:14.32template使ったらヘッダでincludeしなきゃならなくなる。
template使わない方がいいのかな?
0222デフォルトの名無しさん
2013/03/03(日) 09:10:02.15それもテンプレートにすりゃいいじゃん
0223デフォルトの名無しさん
2013/03/03(日) 09:20:01.48例を出すと、Windows.hをヘッダでインクルードしないぞと決めていて、
template使ってしまうと、実装部分にSleep関数あるから困るみたいな感じ。
0224デフォルトの名無しさん
2013/03/03(日) 09:23:12.51void func(int a, F f) { f(a); }
で使う側で func(10, Sleep); としてやればいい
0225デフォルトの名無しさん
2013/03/03(日) 09:46:52.12関数渡してやればいいわけですか
ありがとうございました
あとは自分の中で保守性とか考えてどうするか決めたいと思います
0226デフォルトの名無しさん
2013/03/03(日) 13:18:41.660227デフォルトの名無しさん
2013/03/03(日) 23:29:17.69俺質問者じゃないけど、興味あるから具体的にどうするか教えて
0228デフォルトの名無しさん
2013/03/03(日) 23:48:08.450229デフォルトの名無しさん
2013/03/03(日) 23:49:28.260230デフォルトの名無しさん
2013/03/04(月) 00:11:32.68それじゃ汎用性なさ杉
Sleepが一つならともかく、引数型・数や返値が違うapiを使うたびに書くようじゃ
おいおいじゃないか
0231デフォルトの名無しさん
2013/03/04(月) 00:16:13.93それを継承するのが定石じゃね?
0232デフォルトの名無しさん
2013/03/04(月) 02:23:19.72auto func(F f, Args... args) -> decltype(f(args...))
{ return f(args...); }
0233デフォルトの名無しさん
2013/03/04(月) 03:17:04.21String.copyValueOf(char[] data)使いなよ
0234デフォルトの名無しさん
2013/03/04(月) 03:22:25.60スレタイ見ろよ
0235デフォルトの名無しさん
2013/03/04(月) 03:25:27.520236デフォルトの名無しさん
2013/03/04(月) 03:27:25.040237デフォルトの名無しさん
2013/03/04(月) 03:33:28.250238デフォルトの名無しさん
2013/03/04(月) 03:36:24.64∧_∧
( ・ω・ ) 何も思い残すことはない
(====) ボコボコにされてやんよ
______( ⌒) )
/\  ̄`J ̄ ̄ ̄\
 ̄ ̄ ̄ ̄| | ̄ ̄ ̄ ̄
| |
/ \
0239デフォルトの名無しさん
2013/03/04(月) 03:37:47.11Javaのメソッド紹介してどうする?
0240デフォルトの名無しさん
2013/03/04(月) 03:44:51.160241デフォルトの名無しさん
2013/03/04(月) 20:57:34.98亀ですまんな
薄いテンプレートは型を動的に判定する処理を書いて、テンプレートでラップする事によって型安全性を確保するもの
ttp://ideone.com/l2aW9M
他にも、特定のコンセプトを満たす型を消去したい場合はBoost.TypeErasureが使える
Boost使ってないけどおおよそ以下の感じになる
ttp://ideone.com/l2aW9M
他にもBoost.Variant(Any)など何らかの方法で型を消去してやれば処理の隠蔽が実現できる
0242デフォルトの名無しさん
2013/03/04(月) 23:07:21.04winでcygwin使ってます
0243デフォルトの名無しさん
2013/03/04(月) 23:09:12.310244デフォルトの名無しさん
2013/03/04(月) 23:09:59.230245デフォルトの名無しさん
2013/03/04(月) 23:44:22.91総合開発環境使わないでDXライブラリ使う方法を教えてください
0246デフォルトの名無しさん
2013/03/04(月) 23:50:07.99コード書く
コンパイルする
リンクする
0247デフォルトの名無しさん
2013/03/04(月) 23:50:51.900248デフォルトの名無しさん
2013/03/05(火) 00:23:33.030249デフォルトの名無しさん
2013/03/05(火) 00:44:45.62普段Eclipse使っててCDTなるC/C++開発環境プラグインを導入したのだがコンパイラがついていなかった
なのでcygwin導入したもののEclipseで実行するとバイナリが見つからないチックなエラーが出る
そこで総合開発環境はあきらめて質問した
0250デフォルトの名無しさん
2013/03/05(火) 00:48:12.870251デフォルトの名無しさん
2013/03/05(火) 00:49:21.830252デフォルトの名無しさん
2013/03/05(火) 01:24:36.880253デフォルトの名無しさん
2013/03/05(火) 09:22:27.18の記述はOKなのに、
MAX_DRIVE や MAX_DIR は、前に _ をつけなければならない理由を教えてください。
あと、普段記述するのに、
MAX_PATH
_MAX_PATH
のどちらがいいですか?
0254デフォルトの名無しさん
2013/03/05(火) 09:31:35.01http://www.google.co.jp/search?q=%22MAX_PATH%22+%22_MAX_PATH%22
0255デフォルトの名無しさん
2013/03/05(火) 09:33:39.83変な言い方だがWindowsアプリケーションなのかC/C++アプリケーションなのかで決めろ
_が付く→C/C++実装系の為
付かない->Windows APIのもので言語依存とか知らんがな
0256デフォルトの名無しさん
2013/03/05(火) 19:57:24.85C言語コンパイラで決められているんですか
C言語ではなくOSで決められいるてるんですか
それとも、他のなにかでですか
0257デフォルトの名無しさん
2013/03/05(火) 20:14:51.810258片山博文MZパンク ◆0lBZNi.Q7evd
2013/03/05(火) 21:33:52.52■ このスレッドは過去ログ倉庫に格納されています