[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 2chのread.cgiへ]
Update time : 06/22 14:48 / Filesize : 187 KB / Number-of Response : 798
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【初心者歓迎】C/C++室 Ver.78【環境依存OK】



1 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 19:44:28.87 ]
エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。
※sage禁止です(と代々スレに書いてありますが自己判断で)。

【前スレ】
【初心者歓迎】C/C++室 Ver.77【環境依存OK】
toro.2ch.net/test/read.cgi/tech/1323692486/

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

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

302 名前:デフォルトの名無しさん mailto:sage [2012/05/07(月) 04:50:17.14 ]
>>285

話がまだ続いているから、こっちに移動してもうちょっと詳しく質問してよ。

画像処理 その13
toro.2ch.net/test/read.cgi/tech/1301896601/
582 名前:デフォルトの名無しさん [sage]: 2012/05/07(月) 01:09:44.70
>>579
処理系依存だがや

583 名前:デフォルトの名無しさん [sage]: 2012/05/07(月) 02:54:26.37
処理依存の回答を求めているからだろ。だからもっと依存の強いSIMDのようにハードリソースに合わせたソフトのつくりはアリだと思う

unsignd longは固定64bitと書いてあるように読みとれないか?処理系が変わると大元設計から変えるんだろうね。

えっと、、だがや

303 名前:NAS6 ◆n3AmnVhjwc mailto:sage [2012/05/07(月) 05:41:05.67 ]
n次篩使えば桁は無意味なのに

304 名前:デフォルトの名無しさん mailto:sage [2012/05/07(月) 06:08:21.84 ]
いい加減篩廚は別スレ立ててやれや

305 名前:NAS6 ◆n3AmnVhjwc mailto:sage [2012/05/07(月) 06:17:52.76 ]
四次篩
x^4-y^4=(x^2+y^2)(x+y)(x-y)
と分解したときにnの因数が()3つに分配されることを期待して
gcd(n,x+y)
からnの約数を見つける
同様に八次篩、十六次篩...ができる

306 名前:NAS6 ◆n3AmnVhjwc mailto:sage [2012/05/07(月) 11:00:55.86 ]
冷静になって考えたら二次篩でも四次篩でも演算回数同じだった

307 名前:NAS6 ◆n3AmnVhjwc mailto:sage [2012/05/07(月) 11:36:43.44 ]
二次篩で既にnによらない演算時間だった
>>292
二次篩でいいよ
n=3937
√3937≒63
63^2-n=32=2^5
64^2-n=159=3*53
65^2-n=288=2^5*3^2
(63*65)^2≡(2^5*3)^2(mod n)
gcd(n,63*65±2^5*3)=31


308 名前:NAS6 ◆n3AmnVhjwc mailto:sage [2012/05/07(月) 11:47:16.92 ]
これを実装したよ

309 名前:デフォルトの名無しさん [2012/05/07(月) 11:50:11.99 ]
速いソフトのバリナリあるから比較して味噌

Windows Factoring Software Binaries (64bit & 32bit)
gilchrist.ca/jeff/factoring/index.html
gilchrist.ca/jeff/factoring/benchmark.html
gilchrist.ca/jeff/factoring/pseudoprimes.html

310 名前:デフォルトの名無しさん [2012/05/07(月) 12:11:03.30 ]
このソフトで12秒かかった素因数分解。
これより速くないと世界一は無理だな。


yafu-1.31
sourceforge.net/projects/yafu/files/1.31/yafu-1.31.zip/download

factor(222222222222222222222222222222222222222222222222222222222222222222222)




311 名前:デフォルトの名無しさん mailto:sage [2012/05/07(月) 12:18:46.29 ]
いい加減にしろ

312 名前:NAS6 ◆n3AmnVhjwc mailto:sage [2012/05/07(月) 12:22:01.86 ]
二次篩だったから俺の考えてたより遅いよ

313 名前:デフォルトの名無しさん mailto:sage [2012/05/07(月) 15:28:37.39 ]
>>302
そのスレのは私自身が書き込んだレスじゃないんですが・・・
だれか貼っつけた人が収拾してください

314 名前:デフォルトの名無しさん mailto:sage [2012/05/07(月) 19:19:13.94 ]
学が無くてもそれなりに語れるネタに狂喜乱舞て状況だな

315 名前:デフォルトの名無しさん mailto:sage [2012/05/07(月) 23:02:24.54 ]
スレタイ100回読め

316 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 19:43:04.58 ]
【韓国BBS】台湾人は日本が好きで韓国を嫌う、その理由は?

韓国のコミュニティサイト「ガセンイドットコム」の掲示板に「台湾人たちが、日本が好きで韓国嫌いな理由は?」とのスレッドが立てられたところ、さまざまな意見が寄せられた。

スレ主は、台湾人は韓国と日本の好き嫌いがはっきり分かれていて、韓国は嫌いだが日本がとても好きだとの記事を紹介した。
スレッドには、その理由について「日本と台湾が島国同士だからではないか」との意見が数多く見られた。

・「台湾や日本は両国とも島国で、韓国を困らせるのが趣味。しかし台湾がいくら困らせてようとしても、韓国はあまりにも強くて賢くて倒れない」
・「島国どうしなので、傾向が似ているから惹かれあうのでは。どちらも内部の問題を外部のせいだとか方便を使う」
・「島国は島国どうし仲良くするのが好き」
・「私たちはできるなら台湾や日本の物を使わないことにしましょう。むしろヨーロッパやアメリカの製品を使用しましょう」
news.searchina.ne.jp/disp.cgi?y=2012&d=0508&f=national_0508_070.shtml

◆台湾が韓国嫌いな本当の理由はこれ

韓国は「我々は薄情な裏切り者の日本とは違うから台湾との国交は永遠に断絶しない」と言っておきながら
台湾に公用車として5万台の不人気韓国車を売りつけ、代金を受け取ると同時に、台湾と国交を断絶し中国との国交を結んだ。

しかも韓国の新聞やTVはこれを「韓国の大勝利」「慌てふためく台湾」と馬鹿にして煽り、
ソウルや釜山にあった中華街を様々な規制や嫌がらせで潰し台湾系華僑を追い出した。

その後も韓国は何十年も台湾を攻撃し続けた。
・韓国は、アジアスポーツ大会の主催国争いにおいて、「台湾が権利を譲らなければ大会から台湾を追放する」と恫喝した。
・韓国は、「台湾は国家ではないので参加させない」と国際会議などで台湾を閉め出すなどの行為をしてきた。
・韓国は、台湾が国連やIMFなど国際機関へ加盟することに反対した。
・韓国は、1997年にデフォルトしIMF管理下に入ると台湾に対して「両国間の国家改善のため」といって100億ドルの資金援助を要求した。


317 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 06:42:43.87 ]
>>316
C/C++以外のことも勉強になるな。
でも、スレチだろ。

318 名前:デフォルトの名無しさん [2012/05/10(木) 06:57:15.84 ]
アルゴリズムを実装してるのですが、二分木のrightとかleftが大量に出てきて、
しかも同じ内容の箇所をright用とかleft用に書き直しなので、マクロとかで上手くかけないかと思ってます。

func1() {
tree->left = tree->right;
tree->left->left = tree->right->right;
}
func2() {
tree->right = tree->left;
tree->right->right = tree->left->left;
}
たとえば上記のような2つの処理を書かないと駄目なとき、
funcX(A,B) {
tree->A = tree->B;
tree->A->B = tree->B->B;
}
と書いて
funcX(right,left);
funcX(left,right);
とかやりたいのですが、やり方はないでしょうか。元のtreeのメンバを配列にするのは
できないです。

319 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 07:57:24.58 ]
treeにl()とr()を実装

320 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 07:58:13.70 ]
treeの構造も書かずに聞くかよ。

例えばこんな手はあるぞ。
struct tree {
type * data;
struct tree * left;
struct tree * right;
};

struct tree {
type * data;
struct tree * sides[2];
};
enum {Left, Right};
これなら、
funcX(int a1, int a2)
{
tree->sides[a1] = tree->sides[a2];
}
みたいに書いて
funcX(Right, Left);
みたいに書けるぞ。



321 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 08:16:07.85 ]
質問の意図や前提をくみ取れない糞質問
が多い。それで回答者が逆質問をしたり
悪口を言ったりする。それを前もって思
い描く力が絶望的に欠如してるに違いない。
スーパーハッカーだけが意図を理解できる。
レアなそういう神が颯爽と登場する予感。

322 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 08:29:50.72 ]
なんだろうね、少し前にもあった、この奇妙な改行感は。
行の短さも考慮すると、
コードが大量に出てくるこの板を、携帯で読んでるのかね。
バカじゃないの。

323 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 08:33:41.35 ]
>>322 どこを縦読み?

324 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 08:34:47.70 ]
少なくともtreeの構造は必要だな

325 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 08:52:53.61 ]
>質 問の意図や前提をくみ取れない糞質問
>が 多い。それで回答者が逆質問をしたり
>悪 口を言ったりする。それを前もって思
>い 描く力が絶望的に欠如してるに違いない。
>ス ーパーハッカーだけが意図を理解できる。
>レ アなそういう神が颯爽と登場する予感。

326 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 08:54:21.11 ]
こんなのとか
template <bool Swap>
struct LR {
Tree* operator()(Tree* parent) {
return Swap ? parent->right : parent->left;
}
};

template <bool Swap>
void funcX() {
LR<Swap> Left;
LR<!Swap> Right;

Left(tree) = Right(tree);
Left(Left(tree)) = Right(Right(tree));
}
メンバ変数ポインタを使ってみたりとか
template <bool Swap>
void funcX()
Tree* Tree::*left = Swap ? &Tree::right : &Tree::left;
Tree* Tree::*right = Swap ? &Tree::left : &Tree::right;

tree->*left = tree->*right;
tree->*left->*left = tree->*right->*right;
}

327 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 09:05:47.43 ]
上のoperator()は&が抜けてた。正しくはこうね Tree*& operator()(Tree* parent) {
下は書き間違いが起こりやすそう、最適化が効きにくそうで微妙かも。

328 名前:デフォルトの名無しさん [2012/05/10(木) 11:17:15.73 ]
Treeの構造はこんな感じです。(本当はもっと名前が複雑で長い)
class Tree {Tree* right; Tree* left;}
bool使ったTemplateは複雑な条件に対応できにくそうで、配列はメンバを書き換えないと駄目なのでむりです。
そこでdo {}while(0)のマクロを使って
#define macro1(right, left) do { \
t-> ##right = s-> ##left; \
} while (0)
とかで書きました。


329 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 11:47:52.24 ]
>>328 その ## 連結は不要で不正。

330 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 11:56:48.21 ]
>>318
codepad.org/pMp2PuSI



331 名前:デフォルトの名無しさん [2012/05/11(金) 01:59:16.78 ]
テンプレートでかけるとは。
すごい


332 名前:デフォルトの名無しさん [2012/05/11(金) 02:26:59.71 ]
「テンプレートでかけるとは。 」

と思うほうが、すごい


333 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 06:15:16.11 ]
うん

334 名前:デフォルトの名無しさん [2012/05/11(金) 06:27:13.96 ]
テンプレートでポインタとか使えるとか知りませんでした。


335 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 06:58:09.41 ]
テンプレートがどこに出かけるの?

336 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 07:42:00.96 ]
スムーズに動く2Dアクションを作ろうと思うんですが、マップってある程度(8ドットくらい?)ブロック単位で配列を置くだけでいいんでしょうか?
その場合、マップが広いとやたら長くなりそうなんですが…

337 名前:デフォルトの名無しさん [2012/05/11(金) 15:12:33.62 ]
C++はなんでも作れるって先輩から聞いていたんですが
入社4年でなんとか、使えるようにはなったんですが
未だに彼女が作れません。

本当に作れるんですかね?

338 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 16:26:08.78 ]
ニ値元の彼女なら作られるっしょ

339 名前:デフォルトの名無しさん [2012/05/11(金) 16:29:20.43 ]
>>338
つ OpenGL

340 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 17:13:35.43 ]
>>337
class Kanjo{};
みたいなクラスを作って、

Kanjo misaki;




341 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 18:45:36.36 ]
vector<kanojo> v(make_kanojo());

for_each(v.begin(), v.end(), do_something());


342 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 21:04:06.88 ]
bool Kanojo::Check(class Otoko);

343 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 21:25:17.15 ]
bool Onna::Fuck(class Otoko);


344 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 23:31:57.68 ]
VC++ですが引数つきマクロに,を含む型を正しく渡したいのですが
いい方法はありますか?

codepad.org/S13HXRbC

macro "MAKE_VAR" passed 3 arguments, but takes just 2
をtypedef以外でなんとかしたい、ということです

よろしくお願いします

345 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 23:33:40.70 ]
無い
typedefしろ

346 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 23:39:43.36 ]
>>345
即レスありがとうございます

おとなしくtypedefすることにします

347 名前:デフォルトの名無しさん [2012/05/12(土) 07:50:52.50 ]
質問です。

あるキーワードが与えられると、それに対応する関数を実行するというプログラムがあります。
以下のような、関数ポインタとキーワードがセットになった配列で管理されています。

 struct { void (*pFunc)(); char keyword[256]; } funcTable =
 {
   { &FuncApple, "APPLE", },
   { &FuncOrange, "ORANGE", },
   { &FuncLemon, "LEMON", },
 };

さて、これを可能な限りクラスに置き換えたいと思います。
Fruitクラスを親として、Apple、Orange、Lemonといった子クラスを用意したのですが、
これを配列に収めるにはどうしたら良いでしょうか。

もちろん、ifで1つ1つ分岐させて、それぞれについて new を記述すれば今の自分にも出来るのですが
子クラスの種類が増えると面倒くさそうな気がします。

348 名前: ◆QZaw55cn4c mailto:sage [2012/05/12(土) 07:59:13.80 ]
>>347
>>347 struct funcTable を C でどのように使いたいのかサンプルをひとつみせてほしい。
C++ のクラスだからといって劇的に改善されるわけではない。

349 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 08:16:02.53 ]
>>348
現状こんな感じ。
Match()は、キーワードマッチをする関数だと思ってほしい。

 //funcTableをなめる
 for(int i=0; i<sizeof(funcTable)/sizeof(funcTable[0]); ++i)
 {
   //キーワードマッチしたら、該当の関数を実行
   if ( Match ( inputKeyword, funcTable[i].keyword ) )
   {
     funcTable[i].pFunc( ); //←関数ポインタ
     break;
   }
 }

この関数ポインタの部分を、なんとか出来ないかなって。

350 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 09:13:54.91 ]
ナニがしたいのか意味不明なのでそこらへん推敲して出直してください。



351 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 09:30:26.44 ]
>>350
普通にif文で書くなら、

 Fruit *f;

 if (条件1) f = new Apple();
 else if (条件2) f = new Orange();
 else if (条件3) f = new Lemon();
     :
     :

 f->Hoge();

という感じになると思うんだけど、
数が増えるといちいちifで書いてられないので、何かスマートな方法が無いかなと。

352 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 09:54:28.36 ]
その似非オブジェクト指向臭いコードよりも>349の方が自然じゃないか。

353 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 10:27:51.24 ]
>>352
そういうものかなー?
1人で考えてると何が自然なのか分からなくなってくるね(´・ω・`)

ただまあ、1つの条件式(キーワード)つき、複数の関数ポインタをセットしなきゃならないような場合、
例えば初期化処理と、ルーチン本体と、終了化処理などがある場合だと、全部書かなきゃならないのは不便かも?

354 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 10:38:01.60 ]
それだったら、関数ポインタを構造体に纏めるだろ。
で、初期化が必要だったりしたらクラスにしてメンバー関数にするとか。
そういうアプローチはオブジェクト指向とは違うけれど、自由度は高いんじゃね。

355 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 10:51:15.71 ]
キーワードとフルーツの対応表を作るだけだよな?

356 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 11:03:47.86 ]
347が要求を満たすなら文字リテラルとの比較でそもそも文字列のまま比較する意味が無い
マジ推敲しなおせや

357 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 11:31:53.82 ]
考えてるうちに、関数ポインタ+FactoryMethodパターンあたりの組み合わせで行けそうな気がしてきた。

>>354
実際に関数ポインタを書かなきゃならないのは変わらないけど、
それを構造体にまとめることで、外側(対応表)に出る情報を抽象的&減らそうってアプローチね?

>>355
うん。それをどうしたら実現できるかなって。

>>356
詳しく。

358 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 12:02:31.53 ]
>>347
意味分からんです

>>349
>> この関数ポインタの部分を、なんとか出来ないかなって。
typedefするぐらいです

>>351
349の内容と違いますよね
線形探索が嫌なら適当なコンテナにでも詰め込めばいいです

>>357
>>347を移植するのに、Factory使う人はいないですし
数ポインタの部分を、なんとかしたかったのでは?


359 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 12:24:11.75 ]
>>347
std::map<std::string, std::function> でおしまいな話じゃないの?
(std::function が使えないなら boost::function で。)

360 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 19:59:39.29 ]
>>347
>さて、これを可能な限りクラスに置き換えたいと思います。

IDが無いからどれが質問主のレスなのか追いづらいんだが
もともとの要点は関数を書いているところをクラスに置き換えたいって話だよね?
クラスインスタンスを返す関数にすれば同じ意味になるんじゃない

 struct { Fruit* (*pFunc)(); char keyword[256]; } funcTable =
 {
   { &Apple::StaticCreateInstance, "APPLE", },
   { &Orange::StaticCreateInstance, "ORANGE", },
   { &Lemon::StaticCreateInstance, "LEMON", },
 };

実際はmap使うなり文字列を定数化するなり効率化した方がいいと思うけどね



361 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 20:01:59.41 ]
最も評価の悪い国
1位 イラン
2位 パキスタン
3位 北朝鮮
4位 イスラエル
5位 ロシア
6位 韓国  ←←←←←←←←←←←

最も評価の高い国
1位 日本
2位 ドイツ
3位 カナダ
4位 イギリス
5位 中国
6位 フランス

BBC世界世論調査2012
www.globescan.com/images/images/pressreleases/bbc2012_country_ratings/2012_bbc_country%20rating%20final%20080512.pdf

362 名前: ◆QZaw55cn4c mailto:sage [2012/05/13(日) 10:36:07.66 ]
>>361
toro.2ch.net/test/read.cgi/tech/1333095907/785,789

363 名前:デフォルトの名無しさん mailto:sage [2012/05/13(日) 11:08:18.64 ]
初歩的な質問ですいません。Visual C++ 2010 ExpressでFindFirstFileを利用しようと
下記ページを参考にして、cpp内にvoid Dofind()という関数を作ったのですが、
 WIN32_FIND_DATA fd;
 HANDLE hFind;
などがC2065定義されていない識別子です。とエラーが発生してしまいます。
下記ページ記載の関数以外に何かを定義しておく必要があるのでしょうか?

nienie.com/~masapico/api_FindFirstFile.html

364 名前:デフォルトの名無しさん [2012/05/13(日) 11:19:42.51 ]
windows.h

365 名前:デフォルトの名無しさん mailto:sage [2012/05/13(日) 11:27:06.30 ]
助かりました。Windows APIを利用するためには、
windows.hをインクルードしてあげる必要があるんですね。
ありがとうございました

366 名前:デフォルトの名無しさん mailto:sage [2012/05/13(日) 15:14:15.22 ]
これってちゃんと宣言されてないんでしょうか?
main.cpp
void Reset();

reset.cpp
void Reset(){
int a[5] = {0,0,0,0,0};
a[0] = SRand (12);
}
こうやってるんですが、定義されていない識別子です。と出てしまいます
ヘッダはちゃんと記入してあります

367 名前:デフォルトの名無しさん mailto:sage [2012/05/13(日) 15:24:31.98 ]
>>366
.cpp に宣言だけ書くのはおかしいしヘッダがちゃんとしてても #include してなけりゃ意味が無い。
エラーも Reset について出てるのか SRand について出てるのか・・・
変に省略してあるようで状況がよくわからん。

内容はなるべく省略せずに、エラーメッセージはそのままコピペしろ。

368 名前:デフォルトの名無しさん mailto:sage [2012/05/13(日) 15:36:54.96 ]
>>367
すみません、エラーは
a[0] = SRand (12);
のところで「'a' : 定義されていない識別子です。」と出ました

main.cpp
#include "reset.h"
int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
ChangeWindowMode(TRUE), SetMainWindowText("ランダム"), DxLib_Init(), SetDrawScreen(DX_SCREEN_BACK );
void Reset();}

reset.h
void Reset();

reset.cpp
void Reset(){
int a[5] = {0,0,0,0,0};
a[0] = SRand (12);
}

ちゃんと書くとこんな感じです

369 名前:デフォルトの名無しさん mailto:sage [2012/05/13(日) 15:41:50.66 ]
//reset.cpp
#include "reset.h"//これ忘れてる?
void Reset(){
int a[5] = {0,0,0,0,0};
a[0] = SRand (12);
}

370 名前:デフォルトの名無しさん mailto:sage [2012/05/13(日) 16:36:17.89 ]
>>368
a は直前で宣言されてるし、その内容が正確だとすると main.cpp でも WINAPI やら
DxLib やらでエラー出るだろうし、まだ状況が伝わってこない。



371 名前:デフォルトの名無しさん mailto:sage [2012/05/13(日) 16:44:31.83 ]
int a[5]とa[0]の綴りがことなってるとしか

372 名前:デフォルトの名無しさん mailto:sage [2012/05/13(日) 23:51:10.83 ]
要は、エラーが出るコードをそのまま貼れ、と。

373 名前:デフォルトの名無しさん mailto:sage [2012/05/14(月) 06:19:32.56 ]
mainの最後のvoidって

374 名前:デフォルトの名無しさん mailto:sage [2012/05/14(月) 06:23:51.80 ]
・mainの引数
・mainの最後のvoid
・なんでカンマで文をつなげる
エラーの出るソースコピペしてない?

375 名前:デフォルトの名無しさん mailto:sage [2012/05/14(月) 08:26:46.63 ]
コード関係ないとこでエラー出てるんだろ
初心者にはよくあること

376 名前:デフォルトの名無しさん mailto:sage [2012/05/14(月) 09:44:23.86 ]
そして自己解決してお礼も言わずに去っていったと

377 名前:デフォルトの名無しさん mailto:sage [2012/05/14(月) 21:39:34.19 ]
>>374
つまらんツッコミですまんが、その3つ自体は文法上は問題ないじゃん
(windows.hをincludeしてないからコンパイルエラーになるけど)

378 名前:デフォルトの名無しさん mailto:sage [2012/05/14(月) 22:09:10.68 ]
>>377
いや、voidはエラーになるよ。

379 名前:デフォルトの名無しさん mailto:sage [2012/05/14(月) 22:10:19.45 ]
int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
ChangeWindowMode(TRUE), SetMainWindowText("ランダム"), DxLib_Init(), SetDrawScreen(DX_SCREEN_BACK );
void Reset();}
↑ void Reset();ってなんだよ
関数実行するなら Reset();単体だろ



380 名前:デフォルトの名無しさん mailto:sage [2012/05/14(月) 22:19:09.45 ]
30時間かかってようやく答えめいたモンが出たか
>>279は優秀だな
84点くらいはやろうか

それに引き換えそれ以前のアホは0点んだ0点
味噌汁でツラ洗って出直してこい




381 名前:デフォルトの名無しさん mailto:sage [2012/05/14(月) 22:19:18.00 ]
>>378
なんてエラーになるの?ただの関数宣言で通るんじゃないの?

382 名前:デフォルトの名無しさん mailto:sage [2012/05/14(月) 22:23:33.69 ]
二重定義

383 名前:デフォルトの名無しさん mailto:sage [2012/05/14(月) 22:32:04.96 ]
>>382
なんねーよ。

384 名前:デフォルトの名無しさん mailto:sage [2012/05/14(月) 22:33:30.77 ]
>>382
ただの宣言を定義だといってエラーにするコンパイラがあるのか?
コンパイラの名前とバージョンを晒せ。

385 名前:368 mailto:sage [2012/05/15(火) 00:38:37.67 ]
初心者すぎたのでいろいろ試してたんですが、仰る通りmainのvoidが原因でした
ありがとうございました()

386 名前:デフォルトの名無しさん mailto:sage [2012/05/15(火) 00:41:57.31 ]
ねーよ

387 名前:デフォルトの名無しさん mailto:sage [2012/05/15(火) 00:46:30.07 ]
> ありがとうございました()
オイオイ
こんなのに笑われてんぞw アホ共ww


388 名前:デフォルトの名無しさん mailto:sage [2012/05/15(火) 07:42:39.65 ]
なんか最近キチガイがいるな

389 名前:デフォルトの名無しさん mailto:sage [2012/05/15(火) 09:27:11.10 ]
同感だ
> ありがとうございました()
なんて使ってる368が一番の基地外ゴミカスだ

マジ本人だったら最悪だろこいつ
もう二度と来なくていいんじゃね?


390 名前:デフォルトの名無しさん mailto:sage [2012/05/15(火) 09:35:43.69 ]
開発者の意図を汲み取れないコンパイラの欠陥であり、
言語仕様そのものの欠陥でもある



391 名前:デフォルトの名無しさん mailto:sage [2012/05/15(火) 09:38:22.36 ]
そうだな脳波をコンパイルできるようにすべきだな

392 名前:デフォルトの名無しさん mailto:sage [2012/05/15(火) 10:25:13.93 ]
むしろ脳みそをコネコネと

393 名前:デフォルトの名無しさん mailto:sage [2012/05/15(火) 11:31:23.84 ]
あばばばばば

394 名前:デフォルトの名無しさん mailto:sage [2012/05/15(火) 11:47:10.58 ]
iphoneは送信の横に()があるからミスだろ
俺もたまにやる

395 名前:デフォルトの名無しさん mailto:sage [2012/05/15(火) 12:01:21.80 ]
BB2C?はマイノリティか

396 名前:デフォルトの名無しさん mailto:sage [2012/05/15(火) 12:14:51.09 ]
東京都尖閣諸島寄附金 受付状況


45,089件 609,282,032円 (5月14日入金確認分まで)


www.chijihon.metro.tokyo.jp/senkaku_kifu.htm


送金方法:
www.chijihon.metro.tokyo.jp/senkaku.htm

397 名前:デフォルトの名無しさん mailto:sage [2012/05/15(火) 12:42:11.71 ]
俺が3億円寄付したからその倍か

398 名前:デフォルトの名無しさん mailto:sage [2012/05/21(月) 20:03:43.48 ]
複数の純粋仮想関数を持つ抽象クラスから派生し、独自の変数やメソッドを持たない子クラスを大量に宣言する場合、
子クラスの宣言をマクロにしちゃうのってアリ?
#define CHILD(T) class T :public ParentClass { 〜 }
って感じで。もしくは他に楽に書ける方法ある?

399 名前:デフォルトの名無しさん mailto:sage [2012/05/21(月) 20:16:43.61 ]
エクセルでポトペタかな
(自称)プロは忌避するだろうけど

400 名前:デフォルトの名無しさん mailto:sage [2012/05/21(月) 20:25:12.12 ]
そんな用語が。
ありがとう、ちょっと調べてみる。



401 名前:デフォルトの名無しさん mailto:sage [2012/05/22(火) 01:37:23.30 ]
>>398
マクロだと改行がメンドイから可変部をマクロ定義した上で #include するファイルを作ったほうが
いいかもしれない。

402 名前:デフォルトの名無しさん mailto:sage [2012/05/22(火) 03:28:00.95 ]
>>401
日本語で

403 名前:デフォルトの名無しさん mailto:sage [2012/05/22(火) 03:43:13.91 ]
おめーの理解力が足りないだけ

404 名前:デフォルトの名無しさん mailto:sage [2012/05/22(火) 03:53:21.62 ]
401が何を言いたいのかわかんない

405 名前:デフォルトの名無しさん mailto:sage [2012/05/22(火) 04:20:11.91 ]
書いてある通りでしょ。
理解できないのは、想像力が足りないから。

406 名前:デフォルトの名無しさん mailto:sage [2012/05/22(火) 04:43:13.85 ]
書いてある通りのメンドイコード例を示してみてよ

407 名前:デフォルトの名無しさん mailto:sage [2012/05/22(火) 04:46:15.73 ]
行末

408 名前:デフォルトの名無しさん mailto:sage [2012/05/22(火) 04:48:01.07 ]
401がメンドイと書いているのは「マクロの改行」ね

409 名前:デフォルトの名無しさん mailto:sage [2012/05/22(火) 04:58:18.35 ]
ためしに書いて見れよw
include駆使した効率的なコードとやらを

410 名前:デフォルトの名無しさん mailto:sage [2012/05/22(火) 05:09:01.74 ]
本当にバカだな。



411 名前:デフォルトの名無しさん mailto:sage [2012/05/22(火) 05:10:15.36 ]
> マクロだと改行がメンドイから可変部をマクロ定義した上で
メンドイといいつつ結局マクロなんですね

> #include するファイルを作ったほうが
> いいかもしれない。
直接書いても別ファイルに書いても書く内容に変わりはないですよね

412 名前:デフォルトの名無しさん mailto:sage [2012/05/22(火) 05:10:52.27 ]
// ChildTemplate.h
class CHILD : :public ParentClass { // \ で繋ぐ必要も無いし
 // 行末コメントも使い放題
 // ...
// コンパイルエラーへの対処もしやすい
};

// Childs.h
#define CHILD ChildA
#define ...
include "ChildTemplate.h

#define CHILD ChildB
#define ...
#include "ChildTemplate.h

#define CHILD ChildC
#define ...
#include "ChildTemplate.h

#define CHILD ChildD
#define ...
#include "ChildTemplate.h

413 名前:デフォルトの名無しさん mailto:sage [2012/05/22(火) 05:16:21.41 ]
各行に\が必要ってのが、修正等でどれだけ面倒か
想像もできないのか?

空行すら入れられないし、行末にコード追加も出来ないし
デバッグで#if 0も不可なんだぞ。


別ファイルにすれば、「普通のコード」を書くだけだろ
個別に変えるシンボル名を#defineしてから#includeするだけ。
「普通のコード」だから、必要ならば#ifdef系の条件コンパイルも出来る。
当然だけど、#includeは複数回可能だし。

414 名前:デフォルトの名無しさん mailto:sage [2012/05/22(火) 05:18:37.44 ]
>>411
「関数形式マクロ」と「単純置換のマクロ」があることはご存知?

415 名前:デフォルトの名無しさん mailto:sage [2012/05/22(火) 05:22:34.17 ]
んなメンドイ事するくらいなら
template <int U>class CHILD:public ParentClass{〜};
typedef CHILD<0> A;
typedef CHILD<1> B;
これで十分じゃん?

416 名前:デフォルトの名無しさん mailto:sage [2012/05/22(火) 05:25:16.12 ]
じゃあ>>398にそう言えば?

417 名前:デフォルトの名無しさん mailto:sage [2012/05/22(火) 05:32:49.01 ]
>>412
補完効かなそうだな

418 名前:デフォルトの名無しさん mailto:sage [2012/05/22(火) 06:42:42.02 ]
マクロが嫌でマクロ書く

419 名前:デフォルトの名無しさん mailto:sage [2012/05/22(火) 07:14:44.29 ]
あるある探検隊

420 名前:デフォルトの名無しさん mailto:sage [2012/05/22(火) 07:15:07.97 ]
プログラマーは、楽をするための努力はおしまないものです(キリッ



421 名前:デフォルトの名無しさん mailto:sage [2012/05/23(水) 00:22:36.08 ]
ちょっと変な質問をさせてください

Borland C++で5年ほど前にコンパイルできていたものを、先日久しぶりにビルドを試したらエラーが出て失敗してしまいました
エラー内容はE2134・E2139・W8070などが出ましたが、ソースを見る限り不審な点を見つけられませんでした
なにぶん昔の話なので覚えていないのですが、多少のエラーなら無視して強引にビルドしてしまうような方法を使ったような…

強制ビルドするような方法があったらご教授ください
よろしくお願いします

422 名前:デフォルトの名無しさん mailto:sage [2012/05/23(水) 02:41:03.61 ]
エラーコードだけで分かるかよ

423 名前:デフォルトの名無しさん [2012/05/23(水) 02:54:39.32 ]
強制ビルドなんて無理。
エラーを修正してビルドせよ。
強制したいならエラー部分を手動で削除。

424 名前:デフォルトの名無しさん mailto:sage [2012/05/23(水) 02:58:54.38 ]
質問の意図や前提をくみ取れない糞質問
が多い。それで回答者が逆質問をしたり
悪口を言ったりする。それを前もって思
い描く力が絶望的に欠如してるに違いない。
スーパーハッカーだけが意図を理解できる。
レアなそういう神が颯爽と登場する予感。

425 名前:デフォルトの名無しさん mailto:sage [2012/05/23(水) 04:12:24.08 ]
また変なのが湧いてる

426 名前:デフォルトの名無しさん mailto:sage [2012/05/23(水) 05:07:26.75 ]
>>423
そうですか、ありがとうございました







…だとすると、このexeどうやって生成したんだろう…謎だ…

427 名前:デフォルトの名無しさん mailto:sage [2012/05/23(水) 05:26:24.59 ]
生成日を確認してみなー
修正履歴も探ってみなー

428 名前:デフォルトの名無しさん mailto:sage [2012/05/23(水) 08:11:39.05 ]
ウィンドウレイヤーを作っているのだけど

429 名前:デフォルトの名無しさん mailto:sage [2012/05/23(水) 08:58:38.01 ]
そうか

430 名前:デフォルトの名無しさん mailto:sage [2012/05/23(水) 13:33:14.91 ]
>>421
5年前にビルドした時とOSとかの環境は変わってない?
変わってないなら5年前もエラーが出たはずだろ



431 名前:デフォルトの名無しさん mailto:sage [2012/05/23(水) 17:54:15.34 ]
でも寝かせておくとエラーが消えることがあるってのも、事実だよね…

432 名前:デフォルトの名無しさん mailto:sage [2012/05/23(水) 17:57:31.01 ]
本番環境になるとなぜか出現する奴とかなーw
あほかっ!

433 名前:デフォルトの名無しさん mailto:sage [2012/05/23(水) 18:07:00.05 ]
脳内デフラグで自己完結しても
それを反映させなきゃ変化はないよねー

434 名前:デフォルトの名無しさん mailto:sage [2012/05/23(水) 18:24:01.95 ]
>>431
ねーよww
酒じゃあるまいし

435 名前:デフォルトの名無しさん mailto:sage [2012/05/23(水) 19:19:57.80 ]
>>434
なんかのエロゲーを遊んだあとじゃないと動かないアプリ
とかあったよ


436 名前:デフォルトの名無しさん mailto:sage [2012/05/23(水) 20:34:21.83 ]
深夜だとかっこいいアルゴリズムを思いつくというのはあった

437 名前:デフォルトの名無しさん mailto:sage [2012/05/23(水) 20:42:27.20 ]
翌朝になるとなぜそう書いたか思い出せない

438 名前:デフォルトの名無しさん mailto:sage [2012/05/23(水) 21:13:18.66 ]
自分が経験したのは、オブジェクトファイルだか何だったかが
何故か更新されなかったというのがあったな。

翌日ビルドしたら通った。

439 名前:デフォルトの名無しさん mailto:sage [2012/05/24(木) 00:12:18.27 ]
ファイルを開いたまま握るタイプの糞エディタでビルドログを開いたままビルドして、
ビルドできないと反日悩む馬鹿なら知っている。

440 名前:デフォルトの名無しさん mailto:sage [2012/05/24(木) 16:04:41.11 ]
>>439
俺か



441 名前:デフォルトの名無しさん mailto:sage [2012/05/24(木) 17:08:36.46 ]
>>439
普段の書き込み内容がわかる誤変換だなw

442 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 09:35:09.01 ]
__LINE__や__FILE__で与えられる文字列を、関数(またはマクロ関数)に投げたいのですが、
呼び出し側で毎回指定する以外の方法で、実装することは可能でしょうか。
もしくは同等の機能でも構いません。

例えば別のどこかでLog()という関数が定義されてるとして、
main.cpp内でLog()を呼んだとき、このLog()側から「main.cpp」や行番号という情報を扱えるか、ということです。

もちろんLog(__FILE,__LINE__,〜) とやれば済むのですが、あちこちで使う場合ちょっと面倒かなと。

443 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 09:51:08.36 ]
>>442
つ[マクロ]

444 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 10:01:41.44 ]
>>442
こうやるとか

#define Log(foo) _Log(__FILE__, __LINE__, foo)

void _Log(char *file, int line, char *foo){ /* ... */ }

445 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 10:09:40.65 ]
>>443-444
出来た! ありがとう!

組み込みマクロが展開されるタイミングを勘違いしてたよ。
試しもせずに先入観で否定するのは良くないね。反省。

そして今の環境だと可変長引数のマクロ関数には対応してないようだ(´・ω・`)
必要なときにだけsprintfするか。

446 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 10:58:16.90 ]
(`・ω・´)

447 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 12:57:10.10 ]
(´・ω・`)

448 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 12:59:54.88 ]
スプリントゥフ

449 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 23:10:41.70 ]
組み込みマクロが展開するのってマルチバイト文字列だからUnicodeだと困ったことに

450 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 02:18:27.71 ]
10時間ぐらいかけてもコアダンプされるが原因が分からず聞こうと思ったらやっと見つかった・・・
人に説明するために、この原因はないです。この原因はないです。って一つ一つ整理してたら
ループ内で一要素分だけ動的に確保したメモリをオーバーランしてたことに気づく
結果おかげさまで解決しました、ありがとうございました



451 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 02:20:30.08 ]
よかったですね

452 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 12:07:30.52 ]
おめでとう!

453 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 12:49:10.91 ]
メインクラスで宣言した変数を他のクラスで使いたいんですが、グローバル変数を使えばいいんでしょうか?
int a:だけだと宣言されていないと出てしまい、使い方がイマイチ分からないです

454 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 13:06:27.01 ]
>>453
コードとエラーメッセージ晒せ。

455 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 13:38:30.61 ]
>>453
public でもつけとけ。

こんな質問する程度のお前がが作るソフトに継承、カプセル化、ポリモーフィズムも
関係ないだろうからw

456 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 14:35:26.38 ]
#define private public

457 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 14:37:51.79 ]
>>455
お前、ガガ?

458 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 14:44:35.55 ]
レディ

459 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 17:04:10.61 ]
>>155
C#でいいとおもうよ。手軽だし

460 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 17:05:11.79 ]
あ、さっき乙姫とあってたから時間がおかしいみたいだ。すまん



461 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 17:09:18.34 ]
>>459
本格的なものを作りたいんですよ
C#みたいな、お遊びは時間の無駄じゃないですか

462 名前:453 mailto:sage [2012/06/01(金) 17:14:17.02 ]
調べてもたいして重要じゃないのか出てこなかったんで助かりました
煽りはお決まりなんでしょうか?ともかくありがとうございます

463 名前:デフォルトの名無しさん [2012/06/01(金) 17:29:32.00 ]
>>461
逆だ。時間の有効になる。

464 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 17:31:23.19 ]
>>461
本格的なものってなんぞ

465 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 17:49:07.51 ]
Windows8に代わるOSを作りたいのです

466 名前:片山博文MZボット ◆0lBZNi.Q7evd mailto:sage [2012/06/01(金) 17:57:19.58 ]
>>465 ReactOS

467 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 17:58:50.20 ]
>>464
人様にお金を払って頂けるようなもの

468 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 18:41:09.74 ]
目標を高く持つのは結構だが
まずはベクターあたりに載るのを目指したらどうだね

469 名前:デフォルトの名無しさん [2012/06/01(金) 18:47:56.02 ]
ベクターは自己申告だろ。ウイルス入りは弾かれるかもしれん。

470 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 19:04:02.14 ]
それでも何もしないサンプルアプリそのままとかはダメじゃないか?



471 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 05:56:20.22 ]
つーか、C#で喰ってますが何か。

472 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 07:19:16.51 ]
別に

473 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 09:27:26.99 ]
ここはC++スレです

474 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 13:45:35.43 ]
質問です
Windows/VC++10の環境で、libファイルにリソースを埋め込んで使いたいのですが、
LoadResource等の返り値がNULLで、読み込みに失敗していているようです
ideone.com/40dyA
こんなコード感じのコードなのですが、原因がわかる方居ませんか?

475 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 14:23:58.17 ]
exeとdllだけ

476 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 15:03:56.06 ]
>>475
あ、そうなんですか……
ありがとうございます

477 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 21:11:12.83 ]
CやC++のリファレンスをダウンロードできるサイトとかありませんでしょうか?
例えばPHPのマニュアルのようなものです
自分、暫く海外へ行くもので、ネットに接続出来ないかもしれないのでオフラインで確認したいと思いまして

478 名前:デフォルトの名無しさん [2012/06/02(土) 21:33:03.79 ]
C/C++サイト

www.geocities.jp/ky_webid/
www5c.biglobe.ne.jp/~ecb/index.html
nienie.com/~masapico/
www.cppll.jp/cppreference/index.html














479 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 22:11:54.49 ]
>>478
ありがとうございます

480 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 23:23:13.20 ]
質問です。

C言語で大抵のコンパイラでは、グローバル変数は0で初期化されます。
これは ANSI C の規格で定められているのですか?



481 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 23:27:44.50 ]
はい。

482 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 23:40:43.62 ]
>>478 ありがとうございます、助かりました

483 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 23:41:14.43 ]
間違えました
>>481

484 名前:デフォルトの名無しさん mailto:sage [2012/06/03(日) 02:56:06.66 ]
組み込みだとそうでもなかったりする。

485 名前:デフォルトの名無しさん mailto:sage [2012/06/03(日) 03:13:32.18 ]
>>484 それは規格違反なんだろ。

486 名前:デフォルトの名無しさん mailto:sage [2012/06/03(日) 04:09:06.83 ]
デバッグしやすいように0以外で初期化してくれたり

487 名前:デフォルトの名無しさん mailto:sage [2012/06/03(日) 04:15:17.79 ]
一回しか作られないものはちゃんと値初期化。
何度も作られるものはめんどいので放置。

こういう覚え方で。

488 名前: ◆QZaw55cn4c mailto:sage [2012/06/03(日) 05:19:36.00 ]
>>487
まあそういえなくもないが‥‥やはりプログラムのロードやメモリ配置をここで言及するのはいかんのだろうか?

スタック上のものはプログラム開始時に存在しないので初期化はない。
それ以外のものはプログラム開始時に存在し初期化する。
しかしmalloc() で確保した領域はプログラム開始時にあるものではないので初期化しない。


489 名前:デフォルトの名無しさん mailto:sage [2012/06/03(日) 05:38:40.70 ]
calloc

490 名前: ◆QZaw55cn4c mailto:sage [2012/06/03(日) 05:45:09.46 ]
>>489
そんなものつかうのか?



491 名前:デフォルトの名無しさん mailto:sage [2012/06/03(日) 06:21:53.31 ]
mallocでおじゃる

492 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 13:45:40.85 ]
いきなりで悪いけど、exturnって一人で管理する分にはガンガン使っていいんだよね?
複数人だと宣言が被ったりするから気をつけないといけないだろうけど、苦cってサイトに控えろって書いてあったから気になった

493 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 13:56:10.85 ]
1人でもうっかり被ったりすることはないとはいいきれない
でもまあほとんどないだろうから使いたければ自由に



494 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 13:58:08.14 ]
>>492
関数にexturn → 付ける必要無し
変数にexturn → グローバル変数をガンガン使うな

495 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 14:24:34.18 ]
exturn
exturn
exturn

496 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 14:32:56.25 ]
GUIプログラム初心者なんですが質問させてください
定期的にメッセージボックスを出すだけのプログラムをかいてみたんですが
これだけだとタスクマネージャーからプロセス終了しないと終了できないので
Shell_NotifyIcon というのを使えばいいといわれたんですが
hWndとm_hIconに設定する値がわかりません…
根本的に使い方がまちがってるんでしょうか…


#include <windows.h>

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR lpCmdLine,
                     int nCmdShow)
{
NOTIFYICONDATA notif;
notif.cbSize = sizeof(NOTIFYICONDATA);
notif.hWnd = m_hWnd; // エラー
notif.uID = 0;
notif.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
notif.uCallbackMessage = WM_TRAYICONMESSAGE;
notif.hIcon = m_hIcon; // エラー
lstrcpy(notif.szTip, TEXT("TEST"));
Shell_NotifyIcon(NIM_ADD, ¬if);

while(1) {
MessageBox(NULL, TEXT("test"), TEXT("test"), MB_OK | MB_TOPMOST | MB_SETFOREGROUND);
Sleep(60 * 1000);
}
}

497 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 14:35:43.70 ]
メッセージボックスをOK キャンセルにして、キャンセルなら終了

498 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 14:47:50.66 ]
レスありがとうございます

それだとメッセージボックスがでてるときにしか終了できないですよね…
いつでも終了できるようにしたいんですけど…

499 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 15:01:47.46 ]
Shell_NotifyIconが何をするものか理解してるの?
単に追加すればいいってもんじゃないよ
タスクトレイに表示したいアイコンは?
タスクトレイで操作したメッセージは誰が処理するの?
ググればサンプルが出てくるから頑張れ

500 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 15:07:35.26 ]
やっぱり根本的に理解してなかったんですね…
数行追加するだけでタスクバーに表示されるのかなと思ってたんですが
イベント関連のことが説明やサンプル読んでもぜんぜん分からないので
そのへんから理解していかないとダメみたいですね…

答えていただいた方ありがとうございました



501 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 15:39:19.29 ]
Sleepで待つのも異様だからもっと勉強しなさい

502 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 17:18:43.34 ]
Sleepは目的が1分ごとなのか1分間隔なのかにもよるし
この程度のトイプログラムならタイマーイベント使って微妙なタイミングで下手にエンバグするよりシンプルでいいんじゃね

503 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 17:38:25.18 ]
いつでも終了できるようにしたい (タスクマネージャからプロセスを殺すのは不可)
メッセージボックスが
 でていない時には タスクトレイ経由 SYSMENU 〜 終了へ
 でている時には メッセージボックスのキャンセルで

こういう条件だとタイマーやスレッドを使いたくなるな

504 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 17:51:46.02 ]
そもそもSleepしてる間、何の応答もできないし

505 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 18:03:11.77 ]
メッセージボックスが出てる間もカウントするかどうかも
ちょっと退席してる間にメッセージボックスだらけになるんじゃないか?

506 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 18:24:48.76 ]
まあどっちにしろイベント処理を理解してないと難しい
逆にイベント処理を理解すればタイマーも使えるだろ

507 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 19:20:05.64 ]
そもそも、そのメッセージボックスは何の為に出すんだ?
つーか、先ずは基礎からと考えて、ウィンドウを一つ出しておく方法で実装してみることをお勧めしたい。

508 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 19:27:04.63 ]
普通にi使えばいいのに
iが1000になったら表示とかで

509 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 19:35:15.80 ]
GUIプログラム初心者の質問いつまで引っ張ってんだよww
入門サンプル見て勉強しろで終わりだろw

510 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 20:48:22.04 ]
>>492
それエラーになるよ



511 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 21:17:40.76 ]
なんで初心者ってGUIから入るんだろうね
正直GUIなんてどうでもいいよな


512 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 21:22:36.10 ]
そりゃGUIアプリを作りたいからだろう

513 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 21:31:17.85 ]
ただ、最初からGUIアプリを作りたいならC/C++を選ぶのは茨の道だよなw

514 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 21:38:55.40 ]
そうか?
VC++ならマウス操作だけで、カッコいいVisualStudioライクのGUIが即できるぞ

515 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 21:46:28.83 ]
>>496 はたぶん C/C++相談室から誘導されてきたんだろうけど
あっちのソースみる限りアルゴリズム自体はそれなりにかけるんじゃないかな

UNIX系で勉強していきなり Windows APIは C++ といってもまったく別言語だよな
大学なんかで習ってるなら Java あたりで GUI 覚えてからの方が普通だしな


516 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 22:05:48.33 ]
>>496 ですけどあの後もいろいろレスいただいたみたいでありがとうございます

>>501-506
タイマーは使ったことないですけど仕組みは何となくわかります
ループ1回分の処理を別関数に分けて
何秒後にその関数を呼び出すように登録するようなライブラリがあるんですよね…
とりあえずもっとクリティカルなところでつまずいてたので…
そこが解決したらタイマーも使ってみることにします

>>507
別にそれでもいいんですけど現状覚えたのがメッセージボックスだけで…
C++相談室の方でさきに質問したら Shell_NotifyIcon を進められたんです
メッセージボックスを2つ出せれば解決しそうなんですけど
入力待ちをブロックせずに2つ出すことってできるんでしょうか…

>>511
人に頼まれたプログラムなのでGUIの方がいいかなと…

あとVCは完全にはじめてですがGUI自体は Java なら軽く AWT 習いました
理解してるわけではないんですがテンプレの処理とどのメソッドにとんでくるか覚えてるだけですけど

いろいろサイトみてみたんですけど…
Visual C++ は動かすための最小セットが長すぎてすぐに理解できないんですよね><
どこまでがテンプレでどこまでが追加されたコードなのかっていうのが…
GUIのイベント処理理解するための入門サイトみたいなのがあれば知りたいんですけど…

517 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 22:24:26.63 ]
なんでやねん。Javaほど簡単じゃないけど、やってることの基本は簡単だべ。
関数はたった2つ、main関数とコールバック関数(関数名は自由)。
main関数の仕事はたった2つ。
自分自身が何者であるかをOSに登録して無限ループに入るだけ。
これはもう定型文なのでほとんどコピペ。
コールバック関数はOSから呼び出されるたびに、
引数のひとつであるWindow Message(単なる整数)の値に応じて処理を分岐するだけ。
これはイベントドリブン型のプログラムではたいてい同じロジックだから
言語ひとつ知ってれば全部応用できる。

MFCは複雑だけどね。メッセージループがワークフレームの中に隠れてたりするし。

518 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 22:52:21.91 ]
まあ単純にコード行数の問題じゃね
確かに VC++ で挿入されるテンプレみたら初心者はやる気なくす
俺も最初はそうだった

あと Java は興味あるイベントリスナーだけを登録しておけば
イベント内容に応じて分かりやすい関数名にとばしてくれるからな

イベントディスパッチを自分でやるって違いだけなんだけど
switch 文に見慣れない変数がずらずら並んでると難しく見えるのも分からないでもない

519 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 23:04:55.44 ]
本当はwinapiスレ行けと言いたいがどうなんだろうな

520 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 23:11:05.50 ]
環境依存か



521 名前:デフォルトの名無しさん mailto:sage [2012/06/05(火) 00:01:49.16 ]
質問よろしいでしょうか?
知り合いとプログラムをつくっているのですが
知り合いが new した int配列を mapの中にいれて、eraseでメモリの開放できているといいます。
私がメモリのリークチェックで確認したところ 未開放の情報が出力されるのですがeraseで本当に削除されるのでしょうか?
それともlist::pop_frontみたくmapの中の要素リストから排除するのみなのでしょうか?

522 名前:デフォルトの名無しさん mailto:sage [2012/06/05(火) 00:07:30.95 ]
自分でdeleteしてね

523 名前:デフォルトの名無しさん mailto:sage [2012/06/05(火) 00:13:45.04 ]
ですよね ありがとうございます。

524 名前:デフォルトの名無しさん mailto:sage [2012/06/05(火) 00:50:02.89 ]
>>521-523
delete すんな vector 使え。

525 名前:デフォルトの名無しさん mailto:sage [2012/06/05(火) 00:59:44.40 ]
std::map<x, std::vector<y> >これアリなんだっけ

526 名前:デフォルトの名無しさん mailto:sage [2012/06/05(火) 01:23:19.75 ]
もちろん

527 名前:デフォルトの名無しさん mailto:sage [2012/06/05(火) 11:49:21.23 ]
>>521
何の証拠もなしにできているとほざく知り合いは死ぬべき

528 名前:デフォルトの名無しさん mailto:sage [2012/06/05(火) 12:34:56.25 ]
だよな
そういうやつがよくわからないバグを生み出す原因だったりするよな

529 名前:デフォルトの名無しさん mailto:sage [2012/06/05(火) 12:39:32.19 ]
リークしてることを証明すればいい

530 名前:デフォルトの名無しさん mailto:sage [2012/06/05(火) 12:45:38.46 ]
Thread32First/Nextで列挙したスレッドが
特定のDLLで開始されているか調べるには
どうしたらいいですか?

開始アドレスをNtQueryInformationThreadで
調べるというのは見つけたのですが、
それが特定のDLLのものか、どう調べれば良いですか?



531 名前:デフォルトの名無しさん mailto:sage [2012/06/05(火) 13:01:09.91 ]
CreateToolhelp32Snapshot(TH32CS_SNAPMODULE)でプロセス内のDLLを列挙して
DLLからエクスポート関数を列挙して
プロセス内のDLLアドレス+関数の相対アドレス == 開始アドレス
もしくは GetProcAddress(dll,fname) == 開始アドレス で比較したら
分かる・・・かもしれない やったことないけど

532 名前:片山博文MZボット ◆0lBZNi.Q7evd [2012/06/05(火) 13:19:34.63 ]
>>531 それじゃエクスポートしていない関数じゃできないじゃん。

533 名前:デフォルトの名無しさん mailto:sage [2012/06/05(火) 13:26:48.51 ]
質問が分からないがスレッドがどのプロセスに属するかどうか?

534 名前:デフォルトの名無しさん mailto:sage [2012/06/05(火) 14:00:31.87 ]
>>532
DLLベースアドレス <= 開始アドレス < DLLベースアドレス+DLLサイズで
分かるんじゃね?

535 名前:デフォルトの名無しさん mailto:sage [2012/06/05(火) 14:43:42.23 ]
>>533
Process Explorerでプロセス内のスレッド一覧見ると
Start Addressに
  gdiplus.dll!GdipGetVisibleClipBoundsI+0xad4
  firefox.exe+0x1bf9
とか表示されるから、そういう情報を取りたいんだと思う

536 名前:デフォルトの名無しさん mailto:sage [2012/06/05(火) 15:02:11.80 ]
質問の意図や前提をくみ取れない糞質問
が多い。それで回答者が逆質問をしたり
悪口を言ったりする。それを前もって思
い描く力が絶望的に欠如してるに違いない。
スーパーハッカーだけが意図を理解できる。
レアなそういう神が颯爽と登場する予感。

537 名前:デフォルトの名無しさん mailto:sage [2012/06/05(火) 15:08:37.44 ]
そのコピペは1スレに1回までにしてください

538 名前:デフォルトの名無しさん mailto:sage [2012/06/05(火) 15:27:53.91 ]
ありがとうございます。
>>531 >>532 とりあえず、エクスポート関数に限定して、これを試します。
>>534 DLLベースアドレスの取得方法を教えていただけませんか?
ベースアドレスが衝突してデフォルトでない場合も
取得できるのでしょうか? この方法も試してみたいです。
>>533 >>535さんのおっしゃるとおりです。
dll!func+0xXXXというのは、エクスポートされている関数のアドレスから
0xXXX後にある、エクスポートされてない関数という意味なのですか?
>>536 わかりにくくてすいません。

539 名前:デフォルトの名無しさん mailto:sage [2012/06/05(火) 15:34:38.71 ]
そもそもなにしたいのん?

540 名前:デフォルトの名無しさん mailto:sage [2012/06/05(火) 15:38:56.47 ]
>>538
ベースアドレスはロードされたDLLの先頭メモリアドレスなので
1プロセス内で衝突することは無い
MODULEENTRY32.modBaseAddr がベースアドレス
MODULEENTRY32.modBaseSize がサイズ

modBaseAddr <= p < modBaseAddr+modBaseSize がDLLのメモリ領域



541 名前:デフォルトの名無しさん mailto:sage [2012/06/05(火) 16:12:31.78 ]
のんのんのん♪

542 名前:デフォルトの名無しさん mailto:sage [2012/06/05(火) 18:24:38.63 ]
そんなマニアックなことして何をしたいんだか
ウイルスでも作るのか

543 名前:デフォルトの名無しさん mailto:sage [2012/06/05(火) 18:35:32.14 ]
わかんねーなら黙ってろよ

544 名前:デフォルトの名無しさん mailto:sage [2012/06/05(火) 18:59:48.46 ]
やりたいことによっては別案があるかもしれねぇから聞いているかも知れねぇだろ
アスペは黙ってろ

545 名前:デフォルトの名無しさん mailto:sage [2012/06/05(火) 19:16:25.38 ]
などと、アスペが喚いておりますが、気にしないでくださいね★

546 名前:デフォルトの名無しさん mailto:sage [2012/06/05(火) 19:17:42.89 ]
んだこら

547 名前:デフォルトの名無しさん mailto:sage [2012/06/05(火) 19:23:29.12 ]
最終的に何をやりたいのか明らかにしてないだろ

548 名前:デフォルトの名無しさん mailto:sage [2012/06/05(火) 21:27:18.21 ]
自作のコンテナのイテレータで、stl::listのbegin()ようにポリモーフィズムの呼び出しをさせたくて
iteratorとconst_iteratorのふたつを用意したところ、エラーになります。
なにがいけないのでしょうか? 環境はVS2010です。begjn()が片方だけならコンパイルは通ります。
class MyContainer
{
public:
  template<typename T>
  struct iterator_ {
    iterator_(T* p) : ptr(p) {}
    T* ptr;
  };
  template<typename T>
  struct const_iterator_ {
    const_iterator_(const T* p) : ptr(p) {}
    const T* ptr;
  };
  typedef    iterator_<MyContainer>    iterator;
  typedef const_iterator_<MyContainer> const_iterator;
     iterator  begin()     { return    iterator(this); }
  const_iterator  begin()  const { return const_iterator(this); }
};

MyContainer x;
MyContainer::const_iterator ix = x.begin();

エラー出力
error C2440: '初期化中' : 'MyContainer::iterator' から 'MyContainer::const_iterator_<T>' に変換できません。
with
[
  T=MyContainer
]
コンストラクターはソース型を持てません、またはコンストラクターのオーバーロードの解決があいまいです。

549 名前:デフォルトの名無しさん mailto:sage [2012/06/05(火) 21:48:37.88 ]
うん。だって、xは非constだから、x.begin()は iterator begin() { return iterator(this); } を呼び出してる。
僕の見た限り、iterator を const_iterator に自動変換するコードはなさそうなのでそれでエラーになってる。
struct const_iterator_ {
const_iterator_(const T* p) : ptr(p) {}
template< typename T > const_iterator_( iterator_< T > const &it ) : ptr( it.ptr ) {}
const T* ptr;
};
これでいいんじゃないかな?

550 名前:548 mailto:sage [2012/06/06(水) 06:19:50.51 ]
>>549
なるほど。そういうことなんですね。ありがとうございました!



551 名前:デフォルトの名無しさん mailto:sage [2012/06/06(水) 08:26:14.79 ]
codepadはいつ見てもcookpadに見える

552 名前:デフォルトの名無しさん mailto:sage [2012/06/06(水) 11:46:05.93 ]
基本的な質問で申し訳ありませんが
自分は参照渡しとポインタ渡しは書き方が違うだけでコードは同様と思っていますが
意味が違うと言っている人(ポインタを理解していない?)がいたので質問します

以下のコードに書き方以外の違いはあるのでしょうか?
void hoge::func1(int &p1)
{
p1++;
}

void hoge::func2(int *p1)
{
*p1++;
}


553 名前:デフォルトの名無しさん mailto:sage [2012/06/06(水) 12:00:28.31 ]
間違えました
コードは同様→機能は同様

です

554 名前:デフォルトの名無しさん mailto:sage [2012/06/06(水) 12:04:08.66 ]
基本的には一緒
NULLやポインタ演算を使う場合はポインタを使う

本人じゃないと分からんけど
そういった点でセマンティクスが違うと言ってるのかもしれない


555 名前:デフォルトの名無しさん mailto:sage [2012/06/06(水) 12:04:28.94 ]
>>552
全く違う。ポインタを理解していないのはあんただ。
前者は内容を更新し、後者はポインタを更新する。

556 名前:デフォルトの名無しさん mailto:sage [2012/06/06(水) 12:09:27.37 ]
ポインタを理解してないのか、演算子の優先順位を理解してないのか
どっちなんだろうな。

557 名前:デフォルトの名無しさん mailto:sage [2012/06/06(水) 12:12:58.44 ]
>>555
どっちも結果を捨てているから一緒じゃねぇか。

って突っ込もうと思ったが、ポインタ版は在らぬところを指してしまうからやっぱり拙いかな?

558 名前:530 mailto:sage [2012/06/06(水) 12:21:48.86 ]
ありがとうございます。
>>539 >>542 とりあえずは、ws2_32.dllの非同期通信スレッドが
他のスレッドに邪魔されないように、優先度を上げようと思っています。
>>540 これで行けそうです。ありがとうございます。

559 名前:デフォルトの名無しさん mailto:sage [2012/06/06(水) 12:22:27.46 ]
>>552
*p1++; は *(p1++); になるから (*p1)++; って書かないと参照の方と同じ処理にならないよ

560 名前:デフォルトの名無しさん mailto:sage [2012/06/06(水) 12:59:12.13 ]
> どっちも結果を捨てている
お前大丈夫か?



561 名前:デフォルトの名無しさん mailto:sage [2012/06/06(水) 14:47:40.54 ]
>>558
言語のインストーラがやたらと重いし時間が掛かるのでいつもmsiexexcexeをタスクマネージャで
一個下の優先度に変えているぜ

マルチコアだと関係ないと思われるかも知れないがそれでもタスクの切り替えの時に何か引っ掛かる

562 名前:デフォルトの名無しさん mailto:sage [2012/06/06(水) 15:55:12.46 ]
c++のbool型って1バイト使ってますよね?
bool型の変数を本当に1bitで使うことって出来ますかね?
具体的に言うとboolの配列を出来るだけ多く使いたいので、メモリ節約することで単純に宣言した場合の8倍の量使えるように出来ないかな思ったんですが・・・

563 名前:デフォルトの名無しさん mailto:sage [2012/06/06(水) 16:06:14.41 ]
bitsetを使おう

564 名前:530 mailto:sage [2012/06/06(水) 16:19:46.29 ]
>>561 マルチコアでも、全部のコアが100%に近い場合は、
優先度が顕著に影響しますね。

言語を頻繁にインストールしているのですか?

565 名前:デフォルトの名無しさん mailto:sage [2012/06/06(水) 17:10:27.14 ]
>>564
そんな事はないけどあるコアを100%使う時に気づいた
100%使うような処理は優先度を一つ落とすべきだと思った

>>562
Proxy Classを使うと実現可能だと思うけど遅いと思うぞ

566 名前:562 mailto:sage [2012/06/06(水) 17:30:22.35 ]
>>563,565
bitsetで出来たのでこれでやってみます
ありがとうございました

567 名前:デフォルトの名無しさん mailto:sage [2012/06/06(水) 21:10:51.82 ]
コンストラクタ・デストラクタ呼び出しについて、
new deleteではなくmalloc、コンストラクタ、デストラクタ、freeとやってしまって問題ありますか?
呼び出し忘れの可能性が増えること以外で

568 名前:552 mailto:sage [2012/06/06(水) 21:11:06.78 ]
演算子の優先順を考慮していませんでした (*p)++;ですね
慌ててて書き込むとダメですね

要は
func1を p1 = 0;
func2を *p1 = 0;
として結果は同じことを確認したかったのです

569 名前:デフォルトの名無しさん mailto:sage [2012/06/06(水) 21:26:40.20 ]
>>567
問題ない
デフォルトのoperator newは大抵mallocを使ってる


570 名前:デフォルトの名無しさん mailto:sage [2012/06/06(水) 21:32:58.30 ]
そうですか、とりあえず安心
では続けて質問・・・
class Hoge
{
public:
int hensu;
Hoge(){hensu = 0;}
}

//
Hoge* hogeP = (Hoge*)malloc(sizeof(Hoge));
hogeP->Hoge();//エラー
hogeP->Hoge::Hoge();//OKっぽい、hensu = 0になっている

上記エラーとOKの差の意味ってなんでしょう?



571 名前:デフォルトの名無しさん mailto:sage [2012/06/06(水) 21:46:04.45 ]
本来は両方エラーだがコンパイラの独自拡張が下の例だけ対応しているだけのこと

572 名前:デフォルトの名無しさん mailto:sage [2012/06/06(水) 21:47:15.64 ]
>>570
配置new
ideone.com/ate3L

573 名前:デフォルトの名無しさん mailto:sage [2012/06/06(水) 21:48:31.56 ]
なるほど・・・気にしたら負けな世界ですかね、あんまり深追いしないでおきます

574 名前:デフォルトの名無しさん mailto:sage [2012/06/06(水) 21:51:11.80 ]
> new(p) A();

初めて見る書き方です。replacement newですかね?勉強してみます

575 名前:デフォルトの名無しさん mailto:sage [2012/06/06(水) 22:08:51.39 ]
>>569
おいおい変な事を教えるなよ
規格票に従え

576 名前:デフォルトの名無しさん mailto:sage [2012/06/06(水) 22:10:22.34 ]
だいたい継承関係にあるクラスの派生クラスをdeleteせずにfreeしたらちゃんと
基底クラスのデストラクタ呼び出してくれるのか?よく考えろ

577 名前:デフォルトの名無しさん mailto:sage [2012/06/06(水) 22:13:45.30 ]
大概のライブラリでbitsetってスレッドセーフじゃないんだよね…vector<int>より結局遅くなるケースがおまんちん(´・ω・`)

578 名前:デフォルトの名無しさん mailto:sage [2012/06/06(水) 22:15:37.02 ]
POD型以外はmallocじゃ正しいサイズになる保証もないしな。

579 名前:デフォルトの名無しさん mailto:sage [2012/06/06(水) 22:26:03.75 ]
引数付きコンストラクタも呼び出せないしな

580 名前:デフォルトの名無しさん mailto:sage [2012/06/06(水) 23:48:03.25 ]
>>575
具体的に

>>576
されるけど、何がよく考えろ?
ideone.com/C8PJH

>>578
sizeofが正しいサイズを返さないってこと?
sizeofにはvtblもアラインメントのパディングも反映されるし
mallocの開始アドレスは基本型のアラインメントも保証されてる

>>579
呼び出せるけど、確認してから言ってるの?
ideone.com/TKP9g



581 名前:デフォルトの名無しさん mailto:sage [2012/06/06(水) 23:56:44.79 ]
>>576
>freeしたらちゃんと
というか継承以前にfreeとデストラクタは関係無い

582 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 00:18:29.56 ]
質問させてください

引数で可変サイズの2次元配列を受け渡すにはどうしたらいいんでしょうか?

int det(int[][] a, int n) {

みたいに2次元配列とサイズをうけとってサイズに応じて計算したいんですけど…

583 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 00:29:35.85 ]
>>580
だれもplacement newの話はしてないんだが・・・

頭おかしい?

584 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 00:32:38.67 ]
>>582
C#のジャグ配列みたいな奴って事?

それじゃポインタのポインタのポインタもしくはポインタのポインタのリファレンスを渡して
行もしくは列方向が伸び縮みするようならreallocもしくはC++ならvectorを使った方がいいね
俺自身はvecctorが常に今の行数と行ごとの列数が簡単に把握出来て好きなんだが

585 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 00:33:30.43 ]
ちなみにポインタのポインタではいけないのは、呼び出し元に行方向にreallocした
場合の結果を返せないから

586 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 00:34:53.65 ]
>>582
こういうの?std::vector使った方が良いとは思うけど
ideone.com/pspcT

587 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 00:36:37.16 ]
>>583
どの部分に対するレスかも書けないお前の頭がおかしい

588 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 00:40:51.82 ]
int det(int *, int);
det((int *)a, (sizeof(a) / sizeof(int));

589 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 00:53:17.89 ]
>>587
何でも人のせいにすんなカス
自分の文章を読む能力の不足を棚に上げて偉そうに

590 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 00:57:17.14 ]
>>589
で、結局お前は>>580のアンカ先のうちどれなわけ?
それを書けと言ってるんだが



591 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 01:04:38.95 ]
お返事ありがとうございます

>>584,586
C言語の話でしたすいません

>>585
とりあえず配列は READ ONLY で動いてくれれば…

>>588
ためしにしたのプログラムでコンパイルしてみたんですけど a[1][1] でエラーになります
メソッド内で要素にアクセスするにはどうすればいいんでしょうか…

int det(int *a, int n) {
return a[1][1];
}

int main() {
int a[2][2] = {{1, 2}, {3, 4}};
printf("%d\n", det(a));
return 0;
}



592 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 01:09:32.39 ]
>>582
ideone.com/tQkZx

やっぱりC++とmalloc/free/reallocを組み合わせるのは気が引けるな
std::vector<std::vector<int> > を使うか自前のクラスを作りたい

593 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 01:11:20.40 ]
>>583の正体は次のどれ?
A:>>575 B:>>576
C:>>578 D:>>579

オーディエンスで。

594 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 01:12:46.86 ]
>>591
>>586をCにした
ideone.com/VazAq

595 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 01:29:56.54 ]
>>594
おーーー この方法で動ききました ほんとにありがとうございます! 助かりました!

int det(int *a, int n) {
return *(a+1 * n + 1);
}

int main() {
int a[2][2] = {{1, 2}, {3, 4}};
printf("%d\n", det((int *)a));
return 0;
}

>>592
int det(int **&a, int n) {
return a[1][1];
}
って書き方試してみたんですけど

printf("%d\n", det((int **)a, 2));

だとコンパイルとおらなくて

int **b = a;
printf("%d\n", det(b, 2));

で無理やり型あわせてわたしてみたらコンパイルできたんですけど動かなかったです


596 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 01:45:02.40 ]
>>595
>>592はC++だよ

597 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 01:48:28.56 ]
>>596
そうなんですけど
Cでも int**& って書き方自体できたので
メソッド中で a[1][1] って書き方でアクセスできれば楽かなって試してみたんですけどダメでした

Cで2次元配列扱うのって結構大変なんですね…

598 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 01:52:46.91 ]
>Cでも int**& って書き方自体できたので

やめてください

599 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 01:56:23.42 ]
>>597
コンパイラが a[1][1] を *(a+1 * n + 1) のような計算に変換してくれているので
nの部分をコンパイラが認識出来ないとどうしようもない
mainの中で書けるのは int a[2][2] という定義が見えているため

↓のように認識させれば a[1][1] のように書けるけど1次元分以外は固定になってしまう
ideone.com/vgeLc

600 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 02:09:39.53 ]
>>599
なるほどです

#define ならできるのはわかるんですけど
配列サイズをちっちゃくしながら再帰的にこのメソッドをよびたいので
変数で可変じゃないと困るんですよね…

ちょっとソースが醜くなるけど
一応やりたいことは >>594 でできそうなのでこれでかいてみます
本当にみなさんありがとうございました




601 名前:デフォルトの名無しさん mailto:age [2012/06/07(木) 06:55:51.82 ]
C++

class Hoge{
private:
int hogehoge;
};

このclassをvectorに4つ格納したいのですがどう記述すればいいのでしょうか
型の宣言がわかりません。

vector<Hoge> array(4)

これじゃだめなんですか?


602 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 08:21:09.34 ]
#include <vector>
class Hoge{
private:
int hogehoge;
};

std::vector<Hoge> array(4);


603 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 20:31:48.34 ]
.NETで開発する場合C++/CLIは必須ですか?

604 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 20:45:19.07 ]
いいえ

605 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 21:26:18.99 ]
>>604
だとするとCLIはいつ使うのですか?



606 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 21:32:22.18 ]
>>605
d.hatena.ne.jp/itaro3/20110727/1311716477

これ見て考えろや
でもここまでするなら普通にC/C++使えと思う
既存の.NETのリソースを活用したい時だけか

607 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 21:33:34.20 ]
>>606
ありがとうございます!!!!!

608 名前:デフォルトの名無しさん mailto:sage [2012/06/08(金) 17:20:14.46 ]
久しぶりにクラスのポインタの配列をnewしようとしたら記述方法が解らず過去のソース漁っちまったぜ

何でこんな記述方法なんだ

609 名前:デフォルトの名無しさん mailto:sage [2012/06/08(金) 17:26:58.79 ]
バカ避け

610 名前:デフォルトの名無しさん mailto:sage [2012/06/08(金) 17:43:51.53 ]
>>608
勘違いしてたらごめん、普通な記述方法だと思うけどコレと違うの?
ideone.com/ZCwKK



611 名前:デフォルトの名無しさん mailto:sage [2012/06/08(金) 19:07:55.41 ]
>>610
自明ではないなあ、確かに調べたくなる。
int *p, *q;
なのに
int* [10];。

612 名前:デフォルトの名無しさん mailto:sage [2012/06/08(金) 19:08:13.99 ]
Bjarne Stroustrup氏 インタビュー
www.kh.rim.or.jp/~nagamura/misc/stroustrup-interview.html

613 名前:デフォルトの名無しさん mailto:sage [2012/06/08(金) 19:31:09.43 ]
そこそこ有名な古文書ですね

614 名前:デフォルトの名無しさん mailto:sage [2012/06/08(金) 20:28:57.23 ]
>>611
配列のnewは
 type* p = new type[n];
なのでクラスのポインタ(type = cls*)なら
 cls** p = new cls*[n];

まとめて変数を定義する構文は欠陥品みたいなもんだから使わない方がいい
理解云々より「型 変数,変数;」にならない場合があるシンタックスがキモイ

615 名前:デフォルトの名無しさん mailto:sage [2012/06/08(金) 23:18:54.25 ]
ポインタ配列は使わずにptr_vector使ってるわ

616 名前:デフォルトの名無しさん mailto:sage [2012/06/09(土) 00:09:07.32 ]
>欠陥品みたいなもん
聞いたことないわ
脳内か?

617 名前:デフォルトの名無しさん mailto:sage [2012/06/09(土) 01:31:56.33 ]
禿がそんなようなこと言ってた気がする

618 名前:デフォルトの名無しさん mailto:sage [2012/06/09(土) 06:33:12.18 ]
int *p, *q;

int* p, q;

どっちが意図通りか分かりにくい

619 名前:デフォルトの名無しさん mailto:sage [2012/06/09(土) 09:22:15.62 ]
>>616
C++言語設計者曰く
Bjarne Stroustrup's C++ Style and Technique FAQ
www2.research.att.com/~bs/bs_faq2.html#whitespace
>A ``typical C programmer'' writes ``int *p;''
>A ``typical C++ programmer'' writes ``int* p;''
>...
>Stick to one pointer per declaration and always initialize variables and the source of confusion disappears.

620 名前:デフォルトの名無しさん mailto:sage [2012/06/09(土) 10:32:50.57 ]
[C++設計と進化]でもCの宣言シンタクスをdisってるよね。
構文を変えようとしたけどCユーザーの反発とか色々あって放置に決めたっていう。



621 名前:デフォルトの名無しさん mailto:sage [2012/06/09(土) 11:10:58.17 ]
>>618
どっちがどうなのかさっぱりだ

基本Cな俺は上で記述したくなるけど

622 名前:デフォルトの名無しさん mailto:sage [2012/06/09(土) 12:27:10.29 ]
int*をtypedefしたらさらにややこしい

623 名前:デフォルトの名無しさん mailto:sage [2012/06/09(土) 13:20:15.63 ]
いやそこは#define だろ

624 名前: ◆QZaw55cn4c mailto:sage [2012/06/09(土) 13:47:33.95 ]
なんでもありの #define は避けれるのであれば避けたほうがいい。

625 名前:デフォルトの名無しさん mailto:sage [2012/06/09(土) 14:35:41.84 ]
コテはアスペとわかっちゃいても
ヤッパむかつくな

626 名前: ◆QZaw55cn4c mailto:日常やってるjね。野見祐二love [2012/06/09(土) 15:12:12.59 ]
>>625
コードをみせてくれ。話はそれからだ。

627 名前:デフォルトの名無しさん mailto:sage [2012/06/09(土) 15:46:21.13 ]
ナッパむかつくわ

628 名前:デフォルトの名無しさん mailto:sage [2012/06/09(土) 21:11:59.64 ]
ラッパズボン

629 名前:デフォルトの名無しさん mailto:sage [2012/06/09(土) 21:47:37.67 ]
ガッペむかつく

630 名前:デフォルトの名無しさん mailto:sage [2012/06/09(土) 23:03:37.47 ]
charの配列に2バイト文字列が入ってるものをifとかで場合分けしたいんですが、どーしたらいいんでしょう?
別の事情でstring型は使うことができないんです
初歩的な質問ですいませんがよろしくお願いします



631 名前:デフォルトの名無しさん mailto:sage [2012/06/09(土) 23:14:05.73 ]
正確ではないと思うが、全角文字の1バイト目を探すというのはどうだろう。
0x80〜 とかその辺だった記憶

632 名前:デフォルトの名無しさん mailto:sage [2012/06/09(土) 23:21:18.75 ]
>>631
回答有り難うございます
文字列で場合分けしたいので一文字じゃダメなんです……
でも参考になりました ありがとうございます
別で聞いた所strcmp?とかいうもので解決するそうです
もう少し頑張ってみます

633 名前:デフォルトの名無しさん mailto:sage [2012/06/09(土) 23:59:18.06 ]
いや、charの配列を頭から一文字ずつチェックして
その2バイト文字列の文字コードでマルチバイト文字の1バイト目であることを示す値が出てくるかどうかで判断するって話だろ

634 名前:デフォルトの名無しさん mailto:sage [2012/06/10(日) 00:17:31.99 ]
なんでそうなるw

635 名前:デフォルトの名無しさん mailto:sage [2012/06/10(日) 00:24:29.07 ]
3バイト文字列

636 名前:デフォルトの名無しさん mailto:sage [2012/06/10(日) 05:57:32.60 ]
>>630
扱うコードは
SJIS?
UNICODE?

637 名前:デフォルトの名無しさん mailto:sage [2012/06/10(日) 06:03:28.19 ]
UTF8以外は認めない

638 名前:デフォルトの名無しさん mailto:sage [2012/06/10(日) 11:41:33.27 ]
UTF32でおk

639 名前:デフォルトの名無しさん mailto:sage [2012/06/10(日) 12:11:18.15 ]
Bjarne Stroustrup
ってなんて読むの?

バカジャネ ストラップ

でいいの?

640 名前:デフォルトの名無しさん mailto:sage [2012/06/10(日) 12:18:44.54 ]
Wikiみろ。しかし、一般にはハゲである。



641 名前:デフォルトの名無しさん mailto:sage [2012/06/10(日) 12:22:38.71 ]
びよよん ストローストラップ

642 名前:デフォルトの名無しさん mailto:sage [2012/06/10(日) 16:57:25.35 ]
初歩的な質問ですがよろしいでしょうか?

C++における関数や関数の呼び出しにおける変数の扱いについてです。
関数や関数内にて宣言している静的な変数は、関数を呼び出すたびに実行に必要なメモリ領域を確保しているのでしょうか?
関数、変数ともにstatic、inlineなどがついていない関数を前提とします。




643 名前:デフォルトの名無しさん mailto:sage [2012/06/10(日) 17:06:46.76 ]
>>642
>関数や関数内にて宣言している静的な変数
>関数、変数ともにstatic、inlineなどがついていない
矛盾しとるがや。


644 名前:デフォルトの名無しさん mailto:sage [2012/06/10(日) 17:34:56.98 ]
>>643
すみません
つまりこういうことです。

int func()
{
int var;


}
ここでのfuncやvarは実行されるたび確保されるのでしょうか?

645 名前:デフォルトの名無しさん mailto:sage [2012/06/10(日) 17:38:33.59 ]
仕組みを知りたいなら"スタック 自動変数"でぐぐればわかるよ

646 名前:デフォルトの名無しさん mailto:sage [2012/06/10(日) 17:51:53.23 ]
>>645
ありがとうございます。
早速調べさせていただきます。

647 名前:デフォルトの名無しさん mailto:sage [2012/06/10(日) 18:04:43.04 ]
うるせぇ、許可なんか要らないから勝手に調べろよ。

648 名前:デフォルトの名無しさん mailto:sage [2012/06/10(日) 18:36:02.03 ]
ハイハイワロスワロスwwww

649 名前:デフォルトの名無しさん mailto:sage [2012/06/10(日) 19:02:24.84 ]
許可を求めてない件

650 名前:デフォルトの名無しさん mailto:sage [2012/06/10(日) 19:17:56.41 ]
まぁアスペなんだろ
かかわらないほうが吉



651 名前:デフォルトの名無しさん mailto:sage [2012/06/10(日) 19:40:35.31 ]
そもそも確保しなきゃ使えんだろ

652 名前:デフォルトの名無しさん mailto:sage [2012/06/10(日) 19:51:54.42 ]
最初に確保して使いまわしているとかそんなのも考えていたんじゃないか?
そうなると再起関数の部分とかで矛盾が発生するとか考えればわかるけど

653 名前:デフォルトの名無しさん mailto:sage [2012/06/10(日) 20:03:12.96 ]
静的な変数≠static と思っているあたりもっと根本的なところが

654 名前:デフォルトの名無しさん mailto:sage [2012/06/10(日) 20:09:06.45 ]
Qが最近あちこちのスレでコテ消して暴れているような気がする

655 名前:デフォルトの名無しさん [2012/06/10(日) 21:02:46.39 ]
>>653
悪い質問者じゃないんだけどさ・・・
関数内での変数ってstatic明示的に書かない限りAuto変数だと思っていた
kwsk教えてエロい人

656 名前:デフォルトの名無しさん mailto:sage [2012/06/10(日) 21:05:14.17 ]
つまり>>643だよ

657 名前:デフォルトの名無しさん [2012/06/10(日) 21:12:59.86 ]
そういえば、確かに静的変数なのにstaticがついていないのは矛盾している・・・。
ごめんなさい、なにか勘違いしていました。

658 名前:デフォルトの名無しさん mailto:sage [2012/06/11(月) 01:56:38.09 ]
>>654
Qは指パッチンで何でもできるからな。

659 名前:デフォルトの名無しさん mailto:sage [2012/06/11(月) 03:32:25.29 ]
>>654
気のせいだろ?このスレにしてもQにしてはレベルが低い、というかQならとうに知ってるはず。

660 名前:デフォルトの名無しさん mailto:sage [2012/06/11(月) 03:35:58.64 ]
いやQの正体はこんなもんじゃないのかな



661 名前:デフォルトの名無しさん mailto:sage [2012/06/11(月) 04:59:12.55 ]
むしまるQ

662 名前:デフォルトの名無しさん mailto:sage [2012/06/11(月) 10:25:25.11 ]
DQN

663 名前:デフォルトの名無しさん mailto:sage [2012/06/11(月) 15:13:36.00 ]
C++のコンパイラ、IDEは何を使えばいいでしょうか(各コンパイラは主として何が違うのでしょうか)
今のところ、Borland C++ Compiler、BCC Developerを使おうと思っています

664 名前:デフォルトの名無しさん mailto:sage [2012/06/11(月) 15:30:43.85 ]
IDEが決まってから環境(OSとか)を合わせるの?

665 名前:デフォルトの名無しさん mailto:sage [2012/06/11(月) 15:40:13.46 ]
OSはWindowsXPとWin Vistaです
他にも(使用環境について)何か必要でしょうか?

666 名前:デフォルトの名無しさん mailto:sage [2012/06/11(月) 15:55:48.00 ]
Visual C++ 2010 Express でいいんじゃね

667 名前:デフォルトの名無しさん mailto:sage [2012/06/11(月) 16:33:13.06 ]
フリーのやつ全部試せ
無駄にはならん

668 名前:デフォルトの名無しさん mailto:sage [2012/06/11(月) 16:46:17.50 ]
LSI C 3.30試食版

669 名前:デフォルトの名無しさん mailto:sage [2012/06/11(月) 17:03:17.01 ]
Borland C++ Compilerはクソ古い上に公式が消滅してるし
Linuxメインでない限りmingw,cygwin使うのはアホだし
VC++除けば Digital Mars C/C++ Compilerくらいか?

670 名前:デフォルトの名無しさん mailto:sage [2012/06/11(月) 18:56:50.56 ]
用途というか、目的によって違うと思う。

簡単なWindowsアプリをお手軽に作ってみたいというならVC++で良いと思う。
C言語を純粋に勉強したいというなら、gcc(Mingw,cygwin)+eclipse(CDT)の方が良いと思う。

VC++のなんとなく嫌な所はC言語としては、Microsoftの方言があると思える所。
GCCの嫌な所は、Windowsアプリを作るのが面倒くさい(という印象)がある所。

「Windowsのアプリを作り易い」ということは、「WindowsのAPIを簡単に使える」という話だから、
C言語の本体とは直接関係ないけどね。



671 名前:デフォルトの名無しさん mailto:sage [2012/06/11(月) 19:53:51.53 ]
C++だって言ってるだろ

672 名前:デフォルトの名無しさん mailto:sage [2012/06/11(月) 20:01:11.29 ]
じゃあ、C言語をC++言語に、そして、gccをg++に、読み替えてください。

673 名前:デフォルトの名無しさん mailto:sage [2012/06/11(月) 21:01:39.16 ]
VC++のCに方言(っていうか、独自拡張?)なんてあったっけ?
C++は規格合致してない方言まみれだけど
Cは89のままで止まってて、かなり素直だと思うんだけど^^;

むしろ99の機能を一部取り入れてるgccの方が独自拡張多くない?

674 名前:デフォルトの名無しさん mailto:sage [2012/06/11(月) 21:26:55.49 ]
追加仕様はGCCが未対応はVCが多いイメージ

675 名前:デフォルトの名無しさん mailto:sage [2012/06/11(月) 21:30:58.92 ]
>>673
msdn.microsoft.com/ja-jp/library/34h23df8.aspx

676 名前:デフォルトの名無しさん mailto:sage [2012/06/11(月) 21:34:19.97 ]
__declspec(selectany) 便利だよね

677 名前:デフォルトの名無しさん mailto:sage [2012/06/11(月) 21:54:35.82 ]
gccもVC++も色々拡張があるんだね、知らなかった
www-cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/gccextend.html

678 名前:デフォルトの名無しさん mailto:sage [2012/06/11(月) 22:15:19.79 ]
>>677
ふーん、古いページだけれどもその当時の時点でいろいろあったんだ。
>配列変数をコピーする。
は標準じゃなかったっけ。

679 名前:デフォルトの名無しさん mailto:sage [2012/06/11(月) 22:41:43.30 ]
お前構造体と勘違いしてんじゃね

680 名前:デフォルトの名無しさん mailto:sage [2012/06/11(月) 23:00:20.26 ]
配列コピーはGCC拡張だったけど今やるとエラーになる
今の一覧はこれ
gcc.gnu.org/onlinedocs/gcc/C-Extensions.html
gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Extensions.html



681 名前:デフォルトの名無しさん mailto:sage [2012/06/11(月) 23:15:12.86 ]
>>679
そだった。なるほど。

682 名前:デフォルトの名無しさん mailto:sage [2012/06/11(月) 23:20:40.95 ]
配列なんてここ数年使ったときねーな

683 名前:デフォルトの名無しさん mailto:sage [2012/06/12(火) 03:10:00.73 ]
std::arrayが使えるようになってまた使い出した

684 名前:デフォルトの名無しさん mailto:sage [2012/06/12(火) 07:10:39.82 ]
独自のものには__が付いてるから許容範囲

685 名前:663 mailto:sage [2012/06/13(水) 14:20:05.80 ]
レスしてくれた方々ありがとうございます。返信遅れてすみません
まずはVisual C++ 2010 Express使ってみて
不満があるようならg++など順番に変えていこうと思います
(cygwinのインストールはしているのですが、使い方があまり分かっていないので勉強する必要が・・・)

686 名前:デフォルトの名無しさん mailto:sage [2012/06/14(木) 12:47:46.33 ]
std::ostreamってWindows CEでも使える?

687 名前:デフォルトの名無しさん mailto:sage [2012/06/14(木) 15:15:04.81 ]
試したら?

688 名前:デフォルトの名無しさん mailto:sage [2012/06/14(木) 19:47:41.13 ]
C++で、外部の.exeファイルを実行するにはどうすればいいですか?
使っているソフトはVS2010です

689 名前:デフォルトの名無しさん mailto:sage [2012/06/14(木) 20:00:18.12 ]
ExecuteExternExeFile

690 名前:デフォルトの名無しさん mailto:sage [2012/06/14(木) 20:01:49.08 ]
>>688
普通の起動
CreateProcess

エクスプローラーと同じようにファイルを開く場合
ShellExecute

コマンド実行(起動したプロセスが終わるまで待機)
system
msdn.microsoft.com/ja-jp/library/277bwbdz(v=vs.71).aspx



691 名前:デフォルトの名無しさん mailto:age [2012/06/14(木) 23:11:18.71 ]
#include <iostream>
#include <string>

using namespace std;

int main()
{
string str;

while(1)
{
cin >> str;

if(str=="end") break;

cout << str.size;
}

return 0;
}

これエラーが出るんですがstrの要素数を出力する場合どう書けばいいんですか?
VC++2008です。

692 名前:デフォルトの名無しさん mailto:sage [2012/06/14(木) 23:46:53.91 ]
size → size()
ideone.com/YBuvr

693 名前:デフォルトの名無しさん mailto:sage [2012/06/15(金) 06:19:36.46 ]
韓国の国内総生産(GDP)を考慮した個人負債規模が財政危機に陥っているスペイン並みに深刻な水準となった。

個人負債の増加速度は経済協力開発機構(OECD)加盟国で3位と平均を大きく上回った。 

大韓商工会議所が14日に発表した「個人負債現況と政策課題」報告書によると、
2010年の韓国のGDPに対する個人負債の比率は81%でOECD平均の73%より高かった。 

これは財政危機を陥っているスペインの85%に迫る水準だ。ギリシャの61%より20ポイント高い数値だ。

個人負債増加幅も急速に拡大していうる。2006年以後鈍化した個人負債増加率は2010年に前年比2.4ポイント上昇の9.8%を記録した。

【今日の感想】この記事を読んで・・・
面白い (40件)
悲しい (2件)
すっきり (1件)
腹立つ (0件)
役に立つ (6件)

japanese.joins.com/article/707/153707.html?servcode=300§code=300

694 名前:デフォルトの名無しさん mailto:sage [2012/06/15(金) 07:00:42.74 ]
面白い
役に立つ

695 名前:デフォルトの名無しさん mailto:sage [2012/06/15(金) 19:56:02.03 ]
.うん 日本人も他人の事言えないね。

【今日の感想】この記事を読んで・・・
面白い (349件)
悲しい (19件)
すっきり (44件)
腹立つ (4件)
役に立つ (36件)..

696 名前:デフォルトの名無しさん mailto:sage [2012/06/16(土) 06:09:17.53 ]
朝鮮人の嫌がらせにも
マニフェストをなにも守れない民主党の嫌がらせにも
耐え忍ぶ民族

697 名前:デフォルトの名無しさん [2012/06/17(日) 06:24:34.95 ]
class tree {
public:
tree* right;

template <tree* tree::*right>
void func1(tree* t) {
tree *p = t->*right;
}
};

こんなクラスを作ってコンパイルすると以下のようなエラーになります。
test.cpp: In member function ‘void tree::func1(tree*)’:
test.cpp:7: error: ‘((tree*)this)->tree::right’ cannot be used as a member pointer, since it is of type‘tree*’
func1をfriend関数にするとコンパイルが通るのですが、メンバー関数にすると通りません。
どこがまちがってるでしょうか?


698 名前:デフォルトの名無しさん mailto:sage [2012/06/17(日) 11:01:04.58 ]
func1の中のrightがテンプレート引数でなくtreeのメンバのrightとみなされてる

699 名前:デフォルトの名無しさん [2012/06/17(日) 19:06:53.96 ]
なるほど、テンプレート引数名とメンバ名がかぶってたと。
テンプレート引数を変更したらコンパイル通りました。
ありがとうございました。


700 名前:デフォルトの名無しさん mailto:age [2012/06/19(火) 05:42:11.94 ]
C++にはrubyのsuperみたいな予約語はないのでしょうか?





701 名前:デフォルトの名無しさん mailto:sage [2012/06/19(火) 05:46:13.06 ]
基底クラスのメンバ呼びたいとかなら
規定クラス名::func()
で呼べるよ

702 名前:デフォルトの名無しさん mailto:sage [2012/06/19(火) 06:38:25.59 ]
__super

703 名前: ◆QZaw55cn4c mailto:sage [2012/06/19(火) 07:08:52.15 ]
>>700
ないのでは。C++では派生クラスのコンストラクタから基底クラスのコンストラクタへの綱渡りは基本できなかったと思う。


704 名前: ◆QZaw55cn4c mailto:sage [2012/06/19(火) 07:10:00.84 ]
ああ、いいかたがわるかった。綱渡りのための宣言はあったね。ただ super はない。

705 名前:デフォルトの名無しさん mailto:sage [2012/06/19(火) 10:49:09.38 ]
たじる継承の時、superではどっち呼びたいのかわからんからなー。
あ、もともとメンバ名の衝突がある時点でだめか。

706 名前:デフォルトの名無しさん mailto:sage [2012/06/19(火) 13:35:14.84 ]
たじる継承するにはどうしたらいいですか?

707 名前:デフォルトの名無しさん mailto:sage [2012/06/19(火) 14:37:25.62 ]
まず服をたじます

708 名前:デフォルトの名無しさん mailto:sage [2012/06/19(火) 15:35:42.57 ]
タジン鍋つかうあれか

709 名前:デフォルトの名無しさん mailto:sage [2012/06/19(火) 16:27:25.98 ]
たじってしまいました。
どうしますか?

710 名前:デフォルトの名無しさん mailto:sage [2012/06/19(火) 16:35:01.47 ]
味噌と醤油どちらをメインにするか決めずに他汁継承すると大変な鍋になります



711 名前:デフォルトの名無しさん mailto:sage [2012/06/19(火) 17:32:54.82 ]
更にそこに塩の配列を確保します。

712 名前:デフォルトの名無しさん mailto:sage [2012/06/19(火) 17:35:05.28 ]
塩基配列か!

713 名前:デフォルトの名無しさん mailto:sage [2012/06/19(火) 17:38:03.73 ]
するとあら不思議!!

714 名前:デフォルトの名無しさん mailto:sage [2012/06/19(火) 17:39:34.30 ]
多汁した汁が鍋から漏れ出し(リーク)します。


715 名前:デフォルトの名無しさん mailto:sage [2012/06/19(火) 17:41:38.83 ]
ぶたじる継承・完

716 名前:デフォルトの名無しさん mailto:sage [2012/06/19(火) 17:42:50.23 ]
BADENDじゃねぇか!!!

717 名前:デフォルトの名無しさん mailto:sage [2012/06/19(火) 17:52:09.79 ]
ぶたじる継承・第二章

親父の豚汁店を継ぐことを固く決意した主人公。
奇跡とも言われた味を守り抜くことはできるのか。

718 名前:デフォルトの名無しさん mailto:sage [2012/06/19(火) 17:54:05.22 ]
魔王がカレールーを持って現れた!!
どうする豚汁!?

719 名前:デフォルトの名無しさん mailto:sage [2012/06/19(火) 19:04:58.99 ]
>>489-490
ほじくりかえして申し訳ないんだけど、callocってなんかまずいの?

720 名前: ◆QZaw55cn4c mailto:sage [2012/06/19(火) 19:07:12.07 ]
>>719
別に問題ないでしょう。わざわざ0クリアをした領域の上に、なにか別の内容をあらためて代入する、という無駄な動きにめをつぶるのであれば。



721 名前:デフォルトの名無しさん mailto:sage [2012/06/19(火) 19:12:58.27 ]
うお、即レスども。
その特定の状況のみを考えて>>490を書いたってことね。どもです。

722 名前:デフォルトの名無しさん mailto:age [2012/06/20(水) 00:05:49.51 ]
class Base
{
};

class Suba : public Base
{
};

class Subb : public Base
{
};


Suba g_scene

このあとg_sceneの型をSubbに変更するといったことはできるのでしょうか?
できるなら書き方の例もお願いします


723 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 00:25:14.27 ]
ごり押しならな・・・・
Subb b = (*reinterpret_cast<Subb*>(reinterpret_cast<void*>(&g_scene)));
ただこんなことするプログラマーとはあまり関わり合いたくないレベル


724 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 00:29:02.27 ]
せめてvoid*を介した変換にはstatic_cast使ってくれ

725 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 00:32:04.21 ]
そんなのどっちでもいいだろ('A`)
普段もこれからもこんなの書かねぇんだから

そもそもLPVOIDは特殊だがポインタのキャストなんだからreinterpret_castでも問題ないんじゃねぇの?



726 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 01:04:27.18 ]
それ以前にこんなウンコードだれが使うんだよwwww

727 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 01:18:06.44 ]
そもそもreinterpret_cast使うんだったらvoid*使う必要ない

728 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 01:54:06.08 ]
キャストの使い分けよくわかってないやつ多いからなあ

729 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 03:30:37.91 ]
というかC++のキャスト周りで使っているやつみねぇえw
Cキャスト使っている奴ばっかだわw

730 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 04:20:06.18 ]
それってお前が居る環境が糞ってだけじゃねーか



731 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 06:31:49.68 ]
すんません(´・ω・`)

732 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 06:33:40.41 ]
>>722
>Suba g_scene;
こう書かずに
Base *scene;
こう宣言すれば?Baseが必要なメンバーを網羅した抽象化クラスなら問題ない。
Base *scene;
Suba a;
Subb b;
scene = &a;
scene = &b;
基本的にはこんな感じで差し替えてやればいい。もし、Suba、Subb固有の操作が
したいなら、そこだけsceneを使わずaとbを直接参照して操作する。
間違ってもダウンキャストしちゃだめよ。


733 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 09:23:49.61 ]
class ABC{};
std::vector<ABC*> xyz;


void erase(void)
{
 while(xyz.empty()){
  delete *(xyz.begin());
  xyz.erase(xyz.begin());
 }
}

vectorの要素を解放するコードは、これ以上短くなりますか?
または、もっと簡潔に記述出来ますでしょうか?

734 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 09:25:47.55 ]
>>733
> while(xyz.empty()){
じゃなく、
> while(!xyz.empty()){
でした、済みません。


735 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 09:46:26.78 ]
std::for_each(xyz.begin(), xyz.end(), [](ABC* p) { delete p; });
xyz.clear();

736 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 10:35:51.68 ]
C++11だったら std::vector<std::unique_ptr<ABC>> だろJK

737 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 10:47:50.02 ]
>>735
ありがとうございます、勉強になりました。
>>736
じゃないのです。

738 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 12:22:00.38 ]
どうしてboost::ptr_vectorを使わないのか

739 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 12:28:09.53 ]
依存をstd::に留めたい人も割りと居る

740 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 12:42:32.69 ]
どの場面でもboostが許されている訳ではない。



741 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 13:55:11.46 ]
処で、>735はC++11?
だとしたら>733はC++05(だっけ?)の範囲では妥当解?

742 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 14:42:02.22 ]
全部消すなら一々eraseするより
後でclearのほうが効率が良いと思う一応

743 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 14:43:53.32 ]
コードの短かさだけで言えばそうかもしれんが
先頭から一つずつeraseとか無いわ
普通にforでdeleteしてclearか、せめて最後の要素からでないと

744 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 14:45:00.27 ]
>>743>>741

745 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 16:08:17.04 ]
それ以前
無条件にdelete出来るポインタをvectorに格納する意味が判らん

746 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 16:30:53.64 ]
>>733 >>741
backとpop_backでもっと短く,速くなる

ideone.com/zQdD0
4.1秒
while(!xyz.empty()){
  delete *xyz.begin();
  xyz.erase(xyz.begin());
}

ideone.com/R92Ik
0.02秒
while(!xyz.empty()){
  delete xyz.back();
  xyz.pop_back();
}

747 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 17:22:39.84 ]
>>745
わからないならクチを挟むな

748 名前:741(≠733) mailto:sage [2012/06/20(水) 17:28:45.94 ]
>742-746
なるほどね。勉強になったよ。THX!

749 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 17:46:17.97 ]
>>748
もしデストラクタでの処分方法を考えていたのなら、eraseなりclearなりは要らないと思う

750 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 18:00:47.01 ]
for_eachやfor(...;++it)ならな



751 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 18:01:48.71 ]
ああ、そうそう、そこが抜けてたごめん。

752 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 19:22:51.40 ]
クラス→(継承)→サブクラス→(継承)サブサブクラス
とした場合サブサブクラスやサブクラスやクラスの引数なしのコンストラクタって全部動きますか?

753 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 19:26:11.48 ]
当たり前だ

754 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 19:27:30.65 ]
>>753
ありがあとう

755 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 19:32:31.05 ]
デストラクタにvirtualついてなくて乙ることはあるが
コンストラクタですっとばしは考えらん

756 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 19:36:30.29 ]
らんらんるー♪

757 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 20:18:42.52 ]
基底クラスにキャストしたサブクラスの仮想関数を呼び出すと
基底クラスのメソッドとサブクラスのメソッドのどちらが呼び出されますか?

サブクラスのメソッドが呼び出されるとした場合、
サブクラスのフィールドを仮想関数で弄ることはできますか?


アップキャストして基底クラスの状態でまとめたもの(配列)を、
ループで一気に仮想関数を呼ぶことで多種類のサブクラスそれぞれに異なる処理をさせたいです。

758 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 20:25:00.65 ]
何の為の仮想関数なのかわかってないな

759 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 20:29:36.12 ]
仮想関数なんだからどっちが呼ばれるなんて一目瞭然

760 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 20:32:12.85 ]
>>758
すいません、解説サイトがよくわからなくて・・

>>759
つまり・・・!?



761 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 20:35:33.10 ]
>>760
ttp://www5c.biglobe.ne.jp/~ecb/cpp/06_07.html
これ見ればどっちが呼ばれるかわかるだろ

762 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 20:49:52.24 ]
>>757
> 仮想関数を呼ぶことで多種類のサブクラスそれぞれに異なる処理をさせたい
それこそが多態性

763 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 20:53:24.55 ]
仮想関数と言いながら、メソッドとも呼ぶ・・・
メッセージ機能ないんだから関数で通せよ

764 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 20:54:44.78 ]
メゾットなんていわねーよ
メンバ関数だろ

765 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 20:54:53.86 ]
>>761
おお、サブクラスのメソッドが呼ばれるってことですね
ありがとうございます!


766 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 20:58:44.34 ]
>>763
すいません

767 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 21:06:54.73 ]
メゾットって誰?

768 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 21:07:38.92 ]
リゾット

769 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 21:13:40.50 ]
Metzod : (独) メゾッド
特に強くを意味する言葉。
日本ではメッゾフォルテなどが有名。

770 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 21:14:52.08 ]
Matzとではどっちが強いですか?



771 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 21:15:22.00 ]
Matzは全角英数字で殴り続けると死ぬ

772 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 21:16:08.10 ]
その綴りなら読みは メツォット だろ?

773 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 21:17:18.74 ]
いやメトゾッドだ

774 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 21:19:17.74 ]
zeit ツァイト

775 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 21:19:56.51 ]
tはノイズだ
正しくはMezod

776 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 21:21:09.47 ]
それならやっぱりメツォット

777 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 21:39:45.20 ]
↑おまえの負けー

778 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 21:44:41.05 ]
↑↑↓↓←→←→BA

779 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 21:47:07.13 ]
ティリティリティ〜♪

780 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 21:51:50.84 ]
ドイツ語でメゾッドと読ませたいならmesodだ



781 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 22:01:20.13 ]
メソッドもサブクラスもフィールドもC++の標準用語じゃないでしょでしょ
多分C#辺りから渡ってきた人。

782 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 22:06:59.27 ]
英語でどう呼ぶか、だな

783 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 22:32:59.33 ]
Member Functionは、流用元となったSimulaのMember Procedureに準じた言葉。
Methodは、SimulaのMember Procedureに対し、MessageとMethodが分離されていて
別物であることを強調したSmalltalkとObjective-Cの用語。
近頃の言語は、そういう背景を踏まえずにMember Procedureと変わらんものを
Method, Methodと連呼する。ちゃんとMessageを実装している言語に失礼だよね。

784 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 22:53:38.10 ]
勉強になります

785 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 22:58:42.38 ]
言語の背景でプログラム書くわけじゃない

786 名前:デフォルトの名無しさん mailto:sage [2012/06/21(木) 00:25:00.59 ]
プロセジャーとか言い出す講師にあたったときはひどかった

787 名前:デフォルトの名無しさん mailto:sage [2012/06/21(木) 05:51:46.07 ]
「プロセージャですよね?」と聞き返すべき

788 名前:デフォルトの名無しさん [2012/06/21(木) 08:19:27.01 ]
AVL木と、何にもしてないただの木をC++で実装して、大量のランダムデータをinsertしてremoveする、というのの速度を比較したんですが、
データが500万件を越えたあたりでAVLの方が速く終わるようになりました。
insertくらいは普通の木が常に速いと思ったのに。これって正しいですか?


789 名前:デフォルトの名無しさん mailto:sage [2012/06/21(木) 08:36:09.84 ]
>>786
プログラムをプラム、プロシージャをプロセ、アセンブラをアセムって呼ぶ
ICEベンダーの技術者よりはましだと思う。

790 名前:デフォルトの名無しさん mailto:sage [2012/06/21(木) 10:01:50.95 ]
あらゆる主要板にスレッド立てられてますなあ
こりゃアフィにも広まるし
完全に日テレはネットに嫌われるね

■モ娘(狼)
日テレ韓国マンセーで遂にGP帯オール一桁wwwwwwwwww
hayabusa3.2ch.net/test/read.cgi/morningcoffee/1335226115/

■ニュー速(嫌儲)
最近フジより韓流ゴリ押しの酷い日テレ GP帯(19〜23時)視聴率オール一桁達成
engawa.2ch.net/test/read.cgi/poverty/1335228771/

【フジ・日テレ死亡】テレビ朝日視聴率3冠おめでとうございます
engawa.2ch.net/test/read.cgi/poverty/1340233396/

■ニュース速報
【第二のフジテレビ】日テレ、韓流ゴリ押しで大爆死
engawa.2ch.net/test/read.cgi/news/1335230981/

■なんでも実況J
【朗報】韓流ゴリ押しの日テレが低視聴率
hayabusa.2ch.net/test/read.cgi/livejupiter/1335229538/



791 名前:デフォルトの名無しさん mailto:sage [2012/06/22(金) 00:36:20.43 ]
State/Strategyパターンや関数ポインタテーブルを使い、動的に呼び出し先を変えるとする。

どうしてもその呼び出し先ごとに異なる変数を与えたい場合、
適当な変数を用意して代入し、呼び出し先で解釈してもらうという手法はアリ?

例えば変数hogeを用意しておいて、Foo(int hoge) と Bar(int hoge) とでは、hogeの意味(使用目的)が異なるとか。

792 名前: ◆QZaw55cn4c mailto:sage [2012/06/22(金) 01:57:49.23 ]
>>791
関数ポインタテーブルでごにょごにょ、ならばやったことありますが、十分にありだと思います。
テーブルに載せてる関数のなかで一番たくさん引数をもつものにプロトタイプをあわせていました、泥臭いけど。

宿題スレでやってcodepad にもあげたけれどもみつけられかったごめんなさい。

793 名前:デフォルトの名無しさん mailto:sage [2012/06/22(金) 02:00:40.61 ]
>>791
ナシ
呼び出し先によって意味が変わるんじゃ呼び出し側で意味を持たせた引数を指定できない

int f1(int i, int j)
{
 static int v[5] = { 1, 2, 4, 8, 16 };
 return v[i] + v[j];
}

int f2(int i, int j)
{
 return i / j;
}

int main()
{
 int (*pf)(int, int) = 0;
 // pf(1, 0); // f2が呼ばれるならアウト
 // pf(9, 3); // f1が呼ばれるならアウト
}

794 名前:デフォルトの名無しさん mailto:sage [2012/06/22(金) 02:04:08.51 ]
状態遷移がわかっていて、引数変える分には、ハマることはないような

795 名前:791 mailto:sage [2012/06/22(金) 02:58:37.43 ]
>>792-794
ありがとう。意見は割れるかあ。
便利だけど、危険性が伴うからホントどうしようかなと悩んでた。

そりゃ0除算や配列の外側へのアクセスなんかは、数値の範囲チェックをすれば良いだろうけど、
それでも心理的要因などが原因ではまる可能性はあるからなあ。
ぶっちゃけ使ってて気持ち悪いというのが大きいがw

関数ポインタじゃなくてクラスを利用しているなら、キャストを使うことも出来るだろうけど、
それをテーブル等に収めようとすると結局同じ問題が発生するんだよね。

うーん、mapで持たせたほうがスマートかなあ?

796 名前:デフォルトの名無しさん mailto:sage [2012/06/22(金) 03:21:50.32 ]
書いてみて試行錯誤するしか
わかってるなら、矛盾した箇所とか出てくるだろうから、そこをどうするかでしょ

797 名前:デフォルトの名無しさん mailto:sage [2012/06/22(金) 06:55:44.09 ]
>>791
オブジェクトで実装するのであれば無し。
そもそも、ステートオブジェクトに外から関数の引数で値を渡すんじゃなく、
関数が呼ばれたタイミングでステートオブジェクトに情報を取得させればいい。
情報の取得元は、ステート開始以前にコンストラクターとかであらかじめ指定してやる。

StateA state1( &source1 );
StateB state2( &source1 );
StateC state3( &source2 );

state1.ChangeNextState( &state2 );
state2.ChangeNextState( &state3 );
state3.ChangeNextState( &state1 );

next_state = &state1;
while( next_state ) next_state = next_state->Execute();






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<187KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef