- 1 :デフォルトの名無しさん:2012/06/30(土) 19:40:01.73
- エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。
※sage禁止です(と代々スレに書いてありますが自己判断で)。
【前スレ】
【初心者歓迎】C/C++室 Ver.78【環境依存OK】
http://toro.2ch.net/test/read.cgi/tech/1331894668/
◆ソースのインデントについて
半角空白やTABでのインデントはスレに貼ると無くなります。
そのため、アップローダーに上げるのも手ですが直接貼る場合は、
全角空白か に置換すると見栄えだけはよくなります。
【アップローダー】(質問が長い時はココ使うと便利)
http://codepad.org/ (コンパイルもできるし出力結果も得られる[]privateをチェック)
http://ideone.com/ (時間帯によってはcodepadが重い事があるのでここも利用) - 119 :デフォルトの名無しさん:2012/07/15(日) 15:07:09.82
- 初めて質問させていただきます。
現在私はシューティングゲームを製作中で
オブジェクト(弾や敵、プレイヤー等)生成時に製造番号を振ってくれるクラスを作成したのですが
IDを解放する時に、std::listの挙動がおかしくなっていて、困っています。
IDの生成は各オブジェクトのコンストラクタで
IDの解放は各オブジェクトのデストラクタで呼び出しています。
改行が多いと言われてしまったので、次にコードを書きたいと思います。
場所をとってしまってすみません。 - 142 :デフォルトの名無しさん:2012/07/18(水) 14:02:39.82
- あるスレッドで作成したFiber、またはSetTimer、またはQueueUserAPCに
他のスレッドから切り替えさせる方法はありませんか? - 172 :デフォルトの名無しさん:2012/07/23(月) 16:27:46.15
- バイト列を無理やりdoubleにキャストして、それが
doubleとして有効かどうかを判定する方法を教えて - 175 :デフォルトの名無しさん:2012/07/23(月) 23:23:54.34
- >>172
でもそれって一様乱数じゃないよね - 177 :デフォルトの名無しさん:2012/07/24(火) 09:38:27.61
- >>175
一様乱数なバイト列ならdouble表現にしても
符号部,仮数部,指数部どれも一様になる気がするけどならないの? - 178 :デフォルトの名無しさん:2012/07/24(火) 09:42:12.10
- >>177
そもそも全doubleが一様分布じゃないでしょ - 181 :デフォルトの名無しさん:2012/07/24(火) 09:52:40.50
- >>178
どういうこと?
上で出てるisnan,isinfや-0を除外する話でなく? - 182 :デフォルトの名無しさん:2012/07/24(火) 09:58:37.06
- >>181
小さな数は密で大きな数は粗 - 191 :デフォルトの名無しさん:2012/07/24(火) 11:12:15.12
- doubleが表現できる範囲での一様分布なんて無理だろ
- 194 :デフォルトの名無しさん:2012/07/24(火) 14:19:02.99
- >>191
doubleが表現できる範囲=doubleの全ビットパターン なら可能だろ - 216 :216:2012/07/25(水) 21:33:30.39
- #include <vector>
int map_one[10][10] = {
//中身は0,1,2のどれかが10×10
}
int map_two[10][10] = {
//中身は0,1,2のどれかが10×10
}
int map_three[10][10] = {
//中身は0,1,2のどれかが10×10
}
std::vector<int> StageList;
int StageId = 0 //0,1,2のどれか
StageList.push_back(map_one[10][10]);
StageList.push_back(map_two[10][10]);
StageList.push_back(map_three[10][10]); - 277 :デフォルトの名無しさん:2012/08/02(木) 16:08:20.69
- 負の数の試射五入ってどうやってやるの?
- 309 :デフォルトの名無しさん:2012/08/05(日) 04:26:09.40
- 同一のクラス中で同名の変数と関数を宣言したらコンパイルエラーが出て、どうやら衝突してるみたいなんですが、
これって仕様なんですか?
また、変数、関数を別名にする以外の対処法があったら教えて下さい。
例:
class test {
int hoge;
public:
int hoge();
}; - 326 :デフォルトの名無しさん:2012/08/05(日) 12:16:41.70
- #include <stdio.h>
#include <string.h>
#include <conio.h>
using namespace System;
void hoge1()
{
puts("hoge");
}
void hoge2()
{
puts("hogehoge");
}
int main()
{
void (*p1[])() = {hoge1,hoge2},(*p2[2])();
int p3[2];
memcpy(p3,p1,sizeof(p3));
printf("%d,%d\n",p3[0],p3[1]);
memcpy(p2,p3,sizeof(p3));
p2[0]();
p2[1]();
return 0;
} - 329 :デフォルトの名無しさん:2012/08/05(日) 12:47:48.39
- >>326
p1に入ってる関数ポインタを、p2に入れて変数としてアドレスを表示し、
さらにp2の内容をp3の関数ポインタに入れ直して関数ポインタとして実行。
これが何故正常に動くのかは素人には分からんだろうな。 - 331 :デフォルトの名無しさん:2012/08/05(日) 13:28:27.32
- >>329
int型とポインタが同じメモリーサイズだという常識から説明しないと分からんだろ。
16ビットの頃のsizeof(int)は2だし、64ビットでコンパイルするとsizeof(int)は8になる。 - 332 :309:2012/08/05(日) 13:43:33.14
- #include <stdio.h>
int hoge() {}
int hoge;
int main(void)
{
return 0;
}
これでエラーが起きるのは、
同一のメモリ領域にhoge()の実態のアドレスを指すhogeが暗黙的に定数(書き換えできない変数?)として存在しているから。
という理解でいいでしょうか? - 365 :デフォルトの名無しさん:2012/08/05(日) 22:37:46.08
- 31以上を保証しなければいけないのは、内部リンケージの識別子。
- 380 :デフォルトの名無しさん:2012/08/06(月) 02:02:01.95
- NXbitってなに? おいしいの?
- 404 :デフォルトの名無しさん:2012/08/10(金) 14:37:52.01
- 親クラスのメンバを初期化するとき、
class Oya {
protected:
int age;
};
class Kodomo : public Oya {
Kodomo() : Oya::age(50) {}
};
こう書くとエラーになるのは何でですか? - 418 :デフォルトの名無しさん:2012/08/12(日) 06:44:51.22
- 純粋仮想デストラクタを使うのってどういう場面ですか?
何もしてないデストラクタ virtual ~myClass() {} みたいなのがあるのですが、
これを純粋仮想にするとコンパイルが通りません。
いったいどういう場面で使うのでしょうか? - 420 :デフォルトの名無しさん:2012/08/12(日) 09:01:04.93
- >>418
純粋仮想デストラクタを使う場面はありません
インターフェイスのインスタンスを作らせないようにするには
コンストラクタをprotectedにします - 421 :デフォルトの名無しさん:2012/08/12(日) 12:00:48.61
- struct IHoge {
virtual ~IHoge()
{
} // <- このかっこがなんかウザい
virtual void DoSomething() = 0;
};
こういうときに純粋仮想デストラクタを書くと見た目が気持ち良くなります - 424 :デフォルトの名無しさん:2012/08/12(日) 14:16:57.24
- >>421
派生が迷惑だろ
class IHoge:public Deletable みたいな感じに
仮想デストラクターもったクラスを継承した方がいい - 430 :デフォルトの名無しさん:2012/08/12(日) 18:19:08.78
- ラムダみたいにして匿名のクラスをなんとかして作れないんですか
struct Hoge {
Hoge(function<void(void)> h, function<void(void)> w): Hello(h), World(w) {}
function<void(void)> Hello;
function<void(void)> World;
};
template <class T> void Test(T obj) { obj.Hello(); obj.World(); }
int main(void) {
SmartPtr<X> obj(new X);
Test(Hoge(
[obj]() { obj->hello(); },
[obj]() { obj->world(); }));
return 0;
}
このコードからHogeクラスを削りたいんだけど - 435 :デフォルトの名無しさん:2012/08/12(日) 20:34:54.98
- >>430
またhoge厨か
恥ずかしくない?w - 461 :デフォルトの名無しさん:2012/08/12(日) 23:47:32.32
- どうでもいいけど、hogeは『これには何の意味もありません』って意味だからな。
- 480 :デフォルトの名無しさん:2012/08/14(火) 03:15:11.48
- 最後の無限ループはウィンドウが閉じないようにしてる
Run-Time Check Failure #3 - The variable 'hoge' is being used without being initialized.
#include <iostream>
#include <fstream>
using namespace std;
void main(){
ifstream List("GunList.txt");
char* hoge;
while(List.getline(hoge,100)) {
for(int i=0;i<5;i++)
std::cout << hoge;
std::cout << "\n";
}
while(1);
} - 483 :デフォルトの名無しさん:2012/08/14(火) 03:35:06.03
- hoge初期化してねージャン
char hoge[1024];とでもしとけ - 486 :デフォルトの名無しさん:2012/08/14(火) 11:24:24.85
- >>483
char* hoge="";
でもいいの?
文字数分やらないとダメなのかな - 489 :デフォルトの名無しさん:2012/08/14(火) 11:37:02.57
- >>480
どうでもいいけど無限ループでウィンドウを閉じさせないって随分お大尽だな。
CPUぶん回すことになるからエコじゃないぞ。
単に進行を止めたいだけならgetline()でも充分だろ。 - 491 :デフォルトの名無しさん:2012/08/14(火) 12:30:03.32
- >>489
まぁ2秒ぐらい眺めて閉じますし・・・ - 495 :デフォルトの名無しさん:2012/08/14(火) 15:31:48.90
- >>491
言い訳してないで、回答してくれた皆さんに感謝の一言でも書きなさい。 - 496 :デフォルトの名無しさん:2012/08/14(火) 15:34:15.73
- 忘れてました、
ありがとうございました! - 516 :デフォルトの名無しさん:2012/08/14(火) 19:31:03.14
- GUIを勉強すればそこから先はだいぶはかどる
作りたいもの作りながら足りないものをその都度べんきょうするかんじ - 518 :デフォルトの名無しさん:2012/08/14(火) 19:59:29.21
- WIN32APIでGUIやったら挫折した
- 525 :デフォルトの名無しさん:2012/08/14(火) 20:41:38.10
- C#のがライブラリ充実してるしMonoもあるから環境もそんな気にしなくていい
むしろQtを使う理由なんてあるの?って感じ - 542 :デフォルトの名無しさん:2012/08/15(水) 23:45:43.07
- ユニポのカスタムデリータは動的じゃないからいちいち型書かなきゃいかんからめんどくさいよな
なんで静的にしたんだろう - 549 :デフォルトの名無しさん:2012/08/16(木) 03:12:33.15
- fgetsは
abcdefghij�\nklmnopq
という文字列が有った場合に、
17文字読み込むように指定すると、
abcdefghij�\nまで読み込みますか?
それとも
abcdefghij�\nklmno
まで読み込みますか? - 551 : ◆QZaw55cn4c :2012/08/16(木) 03:26:01.87
- >>549
\n が改行コードだとして、
>abcdefghij\n
は11バイトですので、ここまで読み込んで末尾に\0をつけ、以上12バイトを指定領域に残します。 - 553 :デフォルトの名無しさん:2012/08/16(木) 09:34:32.24
- >>542
例えば同種の100個のリソースハンドルがあったとして
それのデリータ関数は1つなのに、関数ポインタなりを100個持つのは無駄じゃね? - 554 :デフォルトの名無しさん:2012/08/16(木) 09:55:18.95
- >>551
前から思ってたけど日本語おかしいよ
残します ってなんだよ - 555 :デフォルトの名無しさん:2012/08/16(木) 10:16:26.00
- >>553
そういうケースはそうかもしれないけど
じゃあこういうケースはどうするの?
vector<MyUniquePtr<IFoo>> v;
v.push_back(MyUniquePtr<FooX>(new FooX)); // 標準new、delete
v.push_back(MyUniquePtr<FooY>(FooY::Create(), FooY::Delete)); // 隠ぺいされた生成、破棄
FooZPool fac = FooZPool::GetInstance(); // プールされたFooZ
v.push_back(MyUniquePtr<FooZ>(fac.get(), [fac] (FooZ * p) { fac.release(p); }); // 借りたものは借りた場所へ
こういうのはデリーターの型固定じゃだるくね? - 556 :デフォルトの名無しさん:2012/08/16(木) 11:22:34.27
- >>555
そういう場合は unique_ptr に動的な削除子の型を指定すればいいんでしょ。
だるいって、具体的に何のことを言ってるの? - 557 :デフォルトの名無しさん:2012/08/16(木) 11:36:21.59
- >>556
どうやって? - 570 : ◆QZaw55cn4c :2012/08/16(木) 21:54:55.57
- >>554
んー、じゃ、どうかけばいいの? - 574 :デフォルトの名無しさん:2012/08/17(金) 04:38:14.46
- >>570
「残す」という言葉の意味を考えれば、どう考えてもおかしいだろ。
その場合は寧ろ、「移す」とか「移動する」とか、さもなきゃ単に「書き込みます」とか。 - 575 :デフォルトの名無しさん:2012/08/17(金) 04:49:48.65
- 日本語がおかしいのは俺も思ってた
在日なん? - 582 :デフォルトの名無しさん:2012/08/17(金) 08:00:39.70
- 厳密性を考慮して思考した結果が「残す」とか。
そもそも、日本語を勉強しなければいけない段階でお郷が知れるのだが。
私ゃ自分の言語感覚のほうを信じるね。 - 583 :デフォルトの名無しさん:2012/08/17(金) 08:32:30.64
- >>582
「移す」よりはましだし、結果を「残す」のだから、意味として問題はない
>>582==>>574
ならば、あんた、言語感覚狂っているよ - 598 :デフォルトの名無しさん:2012/08/18(土) 07:36:31.16
- hoge[]とかfuga[9]とか書くと
hoge[0]だのfuga[4]だのが実際のデータを指し示す事になってるんだよ
これはわかるよな
じゃあそのとき
hogeとかfugaとかだけ書くと、これは実はhoge[0]とかfuga[0]って先頭データのアドレスになってるんだよな
つまりhoge = &(hoge[0])な
その例だとtypedef char* charpとか置き換えると
charp argv[]とcharp *argvになってどっちもargvはcharpのポインタになってるってわけだ - 613 :デフォルトの名無しさん:2012/08/18(土) 22:08:08.77
- hogeじゃなくローマ字でいいから意味の解る名前をつけろ
質問にしてもいちいち目的はなんだと訊かにゃならんからめんどくせぇ - 614 :デフォルトの名無しさん:2012/08/18(土) 22:14:31.80
- >>613
>意味の解る名前
何のためのメタ構文変数なんだよ…… - 619 :デフォルトの名無しさん:2012/08/18(土) 22:34:36.97
- >>614
説明ならともかく質問すんのに無意味な名前をつけるな - 657 :デフォルトの名無しさん:2012/08/21(火) 13:47:35.28
- 655じゃないけどwikiみたら
http://ja.wikipedia.org/wiki/リスコフの置換原則
S が T の派生型であれば、プログラム内でT 型のオブジェクトが使われている箇所は
全て S 型のオブジェクトで置換可能であり、それによってプログラムの動作は全く変化しない
って書かれてるんだけどこれマジで?
「正常に動作する」とかなら分かるけど「動作は全く変化しない」なら
ポリモーフィズム全否定になると思うんだが
というかTが純仮想だったらどうすんのかと - 659 :デフォルトの名無しさん:2012/08/21(火) 17:44:19.62
- >>657
>なお、これが派生型の唯一の定義ではない
と書いてあるじゃん
仮想関数が派生型と基本型で動作が違う事はいくらだってある
無理にC++に当てはめようとする事自体おかしい - 662 :デフォルトの名無しさん:2012/08/21(火) 18:24:32.45
- >>659
それはつまり
リスコフの置換原則についてはポリモーフィズム全否定であってるってこと? - 671 :デフォルトの名無しさん:2012/08/22(水) 00:22:38.46
- using namespace std;
class Sample {
string name;
string groupe;
public:
Sample(string const & n, string const & g): name(n), groupe(g) { }
Sample(string const & n, string && g): name(n), groupe(move(g)) { }
Sample(string && n, string const & g): name(move(n)), groupe(g) { }
Sample(string && n, string && g): name(move(n)), groupe(move(g)) { }
};
上のように引数がたくさんあるとconst & と && の両方を書くのがめんどくさいんですが
どうにかして一発で書く方法はありませんか? - 691 :デフォルトの名無しさん:2012/08/24(金) 01:42:09.63
- ifstream List("List.txt");
string Text;
while(List && getline(List,Text)) {
TextList.push_buck(Text);
}
このようにしてvector<string>TextListにList.txtの文章を一行づつコピーできる
と聞いたのですがどうしてかわかりません。
http://sato-si.at.webry.info/200703/article_1.html
を参考に
http://www.cppll.jp/cppreference/cppio_details.html#getline
のリファレンスと食い違うところがありまして・・・ - 696 :デフォルトの名無しさん:2012/08/24(金) 20:09:30.79
- C++ってCPAN, RubyGemsみたいなのは無いの?
boostは標準化委員会が作ってるtr1候補みたいなものだし - 704 :デフォルトの名無しさん:2012/08/27(月) 14:42:41.72
- >>696
そんなものがあったら
boost.eggの悲劇はおきなかった - 709 :デフォルトの名無しさん:2012/08/28(火) 17:48:38.33
- hello worldの次は何するのが良いと思います?
参考になりそうなサイト読んでもチンプンカンプン - 734 :デフォルトの名無しさん:2012/08/29(水) 20:40:12.92
- Cygwin使ってたら
error: cannot pass objects of non-trivially-copyable type ‘struct std::string’ through ‘...’
って出たんだけれどこれなんですか?
エラー部分は
printf("%s\n",s);
sはstring型です。 - 740 :デフォルトの名無しさん:2012/08/30(木) 07:57:28.02
- linuxでcoutとprintf混ぜるとバグる
http://toro.2ch.net/test/read.cgi/tech/1341052801/l50/../人気ブログランキングへ