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

C++相談室 part73

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2009/10/05(月) 21:47:14
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレに
お願いします。

前スレ
C++相談室 part72
http://pc12.2ch.net/test/read.cgi/tech/1251773567/
0153デフォルトの名無しさん2009/10/09(金) 20:15:45
http://rpen.blogspot.com/2007/08/blog-post_12.html

こっちだった
0154デフォルトの名無しさん2009/10/09(金) 20:31:52
テトリススレ行ってみましたけど、
ぱっと見た感じ知能指数が弱いように見えます
質問したら叩かれそうです
>>152
え・・そんなスクリプト垂れ流しされても困ります・・><
0155デフォルトの名無しさん2009/10/09(金) 20:39:34
10/31までに完成したらここへ参加しよう




HSPプログラムコンテスト2009
HSPプログラムコンテストは、プログラム言語HSP(Hot Soup Processor)により
作られた作品を募集し表彰するイベントです。
すべての応募作品は無料で公開され、ダウンロードできますので、
作品を見てみたいという人も大歓迎です。
HSPを使っている人も、そうでない人も楽しむことができる自作プログラムの祭典にぜひご参加ください。
詳しくは、下のリンクをご覧ください。

締切りまで1ヵ月になりました
いよいよ10月に入って残り期間1ヵ月となりました。
多くの作品ご応募頂き、ありがとうございます。
ギリギリまで製作されている方は、最後の追い込み頑張ってください。
そして、これから製作する人もまだ間に合いますので、ぜひコンテストにご参加ください。
http://hsp.tv/contest2009/
0156デフォルトの名無しさん2009/10/09(金) 20:48:48
HSPのお勧め入門サイト教えてください・・・

本買おうかな・・
0157デフォルトの名無しさん2009/10/09(金) 20:53:31
スレ違すいません
今すぐ、ここを出て行きますから許してください
0158デフォルトの名無しさん2009/10/09(金) 20:53:39
まずは、サンプルでも動かしてみてどんなのが出来るか見てみれば?

hsp\sampleにあるやつ。

HSPTVからもデモみれたとおもうが。
0159デフォルトの名無しさん2009/10/09(金) 20:57:10
HSP( ´,_ゝ`)プッ
0160デフォルトの名無しさん2009/10/09(金) 21:00:35
>>158
いいですね。
でもHSPって低脳がやってるイメージがあるし、やっぱりやめようかと考えてます。
・・・でもやっぱりHSPから入ったほうがいいですかね・・?
最終的には3Dのゲーム製作なんですが・・
0161デフォルトの名無しさん2009/10/09(金) 21:06:49
C++とHSPの差はやることを短縮できる違いがあるだけ。速度の違いもあるが。
堀井雄二はドラゴンクエストの制作者だが、
本人はプログラム出来ないし、どんな言語で作られてるかも知らないだろう。
ゲームの面白さは言語に依存しない。
0162デフォルトの名無しさん2009/10/09(金) 21:08:08
つ DarkBASIC
0163デフォルトの名無しさん2009/10/09(金) 21:12:05
ドラクエは外注で開発するのは何でなんだろう。
九州の会社だろ。
合併して人材豊富と思うが。
0164デフォルトの名無しさん2009/10/09(金) 21:13:05
>>161
重要なのはアイディアですね
ゲームに一番向いてる言語とかあります?
つまり
どの言語でもゲームは作れるし、大差はないってことですか?
0165デフォルトの名無しさん2009/10/09(金) 21:14:56
- 間もなくVCが新種のDarkBASICに追い抜かれますが

確かにC言語の衰退は避けられない事実です。

- それはどうしてですか

趣味でC言語を体得しようとするプログラマがいないからでしょうね。

- 会社で使ってるのに趣味で使いたくない?

そうでしょうね。
そもそもC言語は生産効率向上には寄与しなかったと言う事実があります。
仕様書を噛み砕くだけの、馬耳東風な感覚では愛着が湧かないでしょう。

- 将来的にCプログラマは切り捨てられる?

すでに旧来のCプログラマは他の言語に移管してると思います。
職業的にもCでは使えない状況ですし。

- 加速するIT化に対応できないと言うことですか。

他の言語群がCを包括的に上回っています。

- BASIC言語の台頭の可能性はあると思いますか。

あるでしょうね。
言語仕様が簡素化されて生産効率が上がれば可能性はあると思います。

- かつてCはBASICより速い実行コードを生成すると自慢していましたが。

それは過去の幻想でしょうね。
0166デフォルトの名無しさん2009/10/09(金) 21:16:08
だからゲ製作板いけっつの
知能指数が低そうだから、知能指数が低そうなスレ選んでやったのもわからないくらい知能指数低いの?
0167デフォルトの名無しさん2009/10/09(金) 21:17:28
- 日本では相手にされないと嘲笑されたDarkBASICですが、VCの追い抜き体勢に入りましたね。

日本は封建主義的な社会ですので外来種は常に跳ね返す癖が付いています。

- しかし昨今の世相を見渡しますと、食料品から政権交代までダメなものは国産品でも跳ね返しますね(笑)

確かに、実際に機能しないものは実力行使で跳ね返す癖も付いてきたと言えますね。

- そもそもDarkBASICのユーザー層はどこに重点を置いているのですか。

従来の複雑なWindowsAPIに依存しない、手軽で簡素な3Dプログロミングを楽しめるところでしょうね。
これがかなりのウェイトを占めていると思いますし、Linuxのユーザー層にも移管しやすい好材料です。

- APIはそんなに複雑ですか。

いったん理解すれば難しくはありませんが、ある程度の学習とノウハウ蓄積が必要になります。
これが初心者にとっては大きな障壁になります。

- DarkBASICが日本で注目されるようになったのはいつ頃でしょうか。

まだ注目されていません(笑)
DarkBASICを好んで使うと予想されるユーザー層は、現在のところHSPを使っています。

- HSPはフリー(無料、無償)で3Dプログラミングが可能な簡易言語として広く認知、普及していますね。

HSPは国産のプログラミング言語で、API、DLLを組み合わせて広範な3Dプログラミングが可能です。
中学生程度でも柔軟に使いこなしている実例があります。

- ではDarkBASICは日本での必要性を感じないのでは?

ところがそうではない情勢なんですね。
0168デフォルトの名無しさん2009/10/09(金) 21:17:47
チャーチ・チューリングのテーゼというのがあってだな
まともなプログラミング言語は速度の差こそあれ
「出来ること」は全て同じであることがわかっている
0169デフォルトの名無しさん2009/10/09(金) 21:20:00
では実証してみましょう(笑)
0170デフォルトの名無しさん2009/10/09(金) 21:20:08
>>166
すぐ噛み付くあんたも知能指数低い
0171デフォルトの名無しさん2009/10/09(金) 21:30:40
結論→大規模なプログラムを組むならC++
    簡単テトリスはHSP
0172デフォルトの名無しさん2009/10/09(金) 21:32:53
>>163
時間が無限に使えれば、アセンブラでもコボルでもフォートランでも3Dゲーム作れるだろ。
ハードウェアにアクセスする部分は、言語単体では無理かもしれないが。そこは自作すれば。
一番、自分がやることが少なくて3Dの勉強になるのは、HSPと思う。
0173デフォルトの名無しさん2009/10/09(金) 21:33:05
>>161
堀井雄二はプログラミング「できた」よ。
旧エニックスのホビープログラミングコンテストの佳作獲ったのが縁で
ドラクエ作ることになったんだから。

もちろん、現代のゲームプログラミングの技術を、現役のマと同レベルで
理解しているはずはないけど、言語もわからないような全くのプログラミング音痴ではない。
特に初期ドラクエはメモリ容量との戦いで、あと1KB削るために、1000センテンスある台詞から
平均1文字ずつ削っていったとか、そういう開発してたらしいから。
ディテールは分からずとも、ゲームを組むということの大まかなフィーリングを
マと共有することはできるはずで、それって本当の未経験者にはできない大きなことだと思う。
0174デフォルトの名無しさん2009/10/09(金) 21:39:27
そもそも堀井はシナリオライターでメインプログラマーは中村なんだからどうでもいいだろ
>>173の言うとおり堀井は全くのプログラム音痴なわけじゃない
0175デフォルトの名無しさん2009/10/09(金) 21:40:54
なんか同世代らしき人を発見。
0176デフォルトの名無しさん2009/10/09(金) 21:52:31
ニワンゴもチュンソフトも、ドワンゴの傘下だったんだな。いま知った。
チュンソフトは敵対的買収されたの? 経営難だったの? 買収されるとは意外だった。
0177デフォルトの名無しさん2009/10/09(金) 21:58:17
- ではDarkBASICは日本での必要性を感じないのでは?

ところがそうではない情勢なんですね。

- 具体的にはどういった情勢なんですか。

人的負荷(Human-overhead)の問題を回避できない背景があります。

- 分かりやすく解説して下さい。

ヒューマンオーバーヘッド(以下H.O.H.)の問題は、1つのプログラムを作成する場合に、1つの言語やプラットホーム
の知識だけではなく、複数に跨る言語やプラットホームの知識を必要とする場合によく発生します。

- それがDarkBASICとどう関係するんですか。

DarkBASICはH.O.H.の問題を回避できるようにAPIやハードウェアの個体差を窺いながらプログラミングをする必要が
ありません。

もちろん、すべてではありませんが(笑)

- それはどのような場合に効力を発揮するのでしょうか。

3Dプログラミングにおいて抜群の生産効率を発揮するでしょうね。

- それはCやHSPでもAPIや外部のDLLを使えば簡単にできるでしょう?

確かにそのとおりです、しかしH.O.H.の問題は解決できません。

- 生産効率向上には何が必要なのですか。

体系的に簡素化された言語仕様、これに尽きますね。
0178デフォルトの名無しさん2009/10/10(土) 00:05:20
教えてください。
↓はコンパイルできるんですが、Widget()は左辺値を生じないので
コピーコンストラクタには右辺値が渡され、仮引数型にconstがないので
コンパイルできない筈では?

struct Widget {
Widget() {}
Widget(Widget&) {}
};

int main() {
Widget w(Widget());
}
0179デフォルトの名無しさん2009/10/10(土) 00:09:05
二次元コンテナのイテレーターってどういう仕様がいいんだろう
やっぱイテレーターのイテレーターかな
0180デフォルトの名無しさん2009/10/10(土) 00:13:05
>>178
const付けなかったらただのコンストラクタじゃん
0181デフォルトの名無しさん2009/10/10(土) 00:18:37
>>178
もし、VCなら警告レベルを4にして試してみよう。
01821782009/10/10(土) 00:27:39
>>181
g++ 4.3.3 で -Wall でコンパイルしましたが特に何も出ません。

JISX3014の「8.5.3 参照」の「5 1)」に右辺値の参照適合に関する記述がありますね。
コピーコンストラクタは右辺値でも参照できるということでいいのかなぁ
0183デフォルトの名無しさん2009/10/10(土) 00:33:36
VCだと非標準の拡張機能の警告がでるけど。
0184デフォルトの名無しさん2009/10/10(土) 00:36:41
最適化されて、警告を出さないみたいだけど
0185デフォルトの名無しさん2009/10/10(土) 00:40:25
>178
コンストラクタの呼び出しじゃなくて関数宣言(Widget を返し、Widget を引数にとる w という関数)だと解釈されてるんじゃないの?
01861782009/10/10(土) 00:42:41
>>185
それだとコンパイルエラーが出たんですよ。
で、「コピーコンストラクタでは?」と試したところ異なる結果が出てここに相談に来た次第で。

「12.2 一時オブジェクト」の「5」の参照が一時変数に結合される場合に当てはまってるのかなぁ
0187デフォルトの名無しさん2009/10/10(土) 00:42:43
それは警告が出るから
Widget w((Widget()));
にして試した。
01881782009/10/10(土) 00:44:18
ごめんなさい、関数呼び出しじゃなくて関数宣言ですか。
読み間違えました。
01891852009/10/10(土) 00:46:42
訂正。
「引数なしで Widget を返す関数へのポインタ」を引数にとり、Widget を返す w という関数

Widget w((Widget()));
これでお望み通りエラーが出ると思う。

「C++で最も奇妙な解析」(Effective STL 第6項)ってやつ。
01901782009/10/10(土) 00:53:04
なるほど。
試しにメンバ変数xを追加してw.xをアクセスすると怒られますね。

./test.cc:11: error: request for member ‘x’ in ‘w’, which is of non-class type ‘Widget ()(Widget (*)())’

Effective STL 読んで勉強してきます。どうもでした。
0191デフォルトの名無しさん2009/10/10(土) 09:32:14
- それはCやHSPでもAPIや外部のDLLを使えば簡単にできるでしょう?

確かにそのとおりです、しかしH.O.H.の問題は解決できません。
01921612009/10/10(土) 10:33:56
釣れた。
0193デフォルトの名無しさん2009/10/10(土) 10:41:35
>>164
ここ行って掲示板や、メールして話聞いてくるとか?
このテトリスは良い出来してる。
http://maruchu.nobody.jp/soft/
0194デフォルトの名無しさん2009/10/10(土) 11:52:37
>>193
※パソコン(゜Д゜)ぶっ壊れた
0195デフォルトの名無しさん2009/10/10(土) 11:58:54
>>194

おれも、壊れた・・・orz
0196デフォルトの名無しさん2009/10/10(土) 12:01:55
なになに>>193のゲームにウイルスでも仕込まれてんの?
0197デフォルトの名無しさん2009/10/10(土) 13:41:15
JAVAとかC++とか言われても、サッパリわからん
0198デフォルトの名無しさん2009/10/10(土) 13:43:06
別にいいんじゃね
0199デフォルトの名無しさん2009/10/10(土) 14:11:54
199
0200デフォルトの名無しさん2009/10/10(土) 14:12:35
200
0201デフォルトの名無しさん2009/10/10(土) 15:21:16
200++
0202デフォルトの名無しさん2009/10/10(土) 15:27:13
>>197
なぜここにいるの・・・?(´・ω・)
0203デフォルトの名無しさん2009/10/10(土) 15:55:15
(´・ω・)←使用禁止
0204デフォルトの名無しさん2009/10/10(土) 16:01:21
(´・ω:)
0205デフォルトの名無しさん2009/10/10(土) 18:15:10
(´・M・)
0206デフォルトの名無しさん2009/10/10(土) 20:44:52
(´・λ・)
0207デフォルトの名無しさん2009/10/10(土) 21:02:06
(´@�u@)
0208デフォルトの名無しさん2009/10/10(土) 22:25:46
 顔         意味
(・V・)     (ははははは)
p(^−^)q  (ヒャ〜 おもしれ〜)
(>、<)   (応援ヨロシクっ!)
(M)     (マリオが大好きだよ)
(・○・)    (鼻がカユイ)
(^U^)    (だーい満足)
(^板違い^) (板違いですよ〜)
(==)    (最近ゲームつまんないですね)
(l l)     (悲しいよ〜)
(・w・)    (パズルゲームが好きです)
(’’)     (カービィが大好き)

  使用例
>>○○
そうですね。(==)
でもマリオなんてどうでしょう?(M)
僕は満足でしたよ。(^U^)
あ、なんか鼻がむずむずしてきた。(・○・)
すみません。
(・V・)


みんなどんどん使ってくださいねー。(>、<)
0209デフォルトの名無しさん2009/10/10(土) 22:28:19
(´・ω・)
0210デフォルトの名無しさん2009/10/10(土) 22:31:57
(´ ・    ω    ・ )
0211デフォルトの名無しさん2009/10/10(土) 22:51:30
int main(){bool static const ω=true;for

(;ω;)

;}
0212デフォルトの名無しさん2009/10/11(日) 00:07:10
int main(void) { while

( "ω" )

;}
0213デフォルトの名無しさん2009/10/11(日) 03:12:57
(+C_+ )
0214デフォルトの名無しさん2009/10/11(日) 10:29:45
c++でjavaみたいにローカルスコープでスレッドオブジェクトを作成して
走らすみたいなことってできますか?
スレッドプールを使うしかないような気がするのですが詳しい方教えて。
0215デフォルトの名無しさん2009/10/11(日) 10:44:13
boost::threadを使えばすぐできる。
でなければ、begen_threadexを使ってthreadクラスを作る。
02162142009/10/11(日) 11:11:57
boost::threadならjoinしてdeleteする必要があるのでは?
ローカルスコープでnewして放置はc++ではできないですよね。
すると上位スコープにboost::threadオブジェクトのポインタをshared_ptr等で持っておく必要になるかと。
そうなると次回に同じローカルスコープでboost::threadがnewされたときに前回のオブジェクトをjoinして待たねばならない?
join後に新規オブジェクトとswapするような実装だと、ちょっと違うかなと思うのですが。
0217デフォルトの名無しさん2009/10/11(日) 11:45:42
listとか
02182142009/10/11(日) 11:49:55
listで保持するくらいなら、ある程度の容量でスレッドプールを作りますよね。
0219デフォルトの名無しさん2009/10/11(日) 12:26:46
boost::thread_groupを使えばスレッド終了時にthreadクラスのインスタンスを削除してくれるね。

newして放置というのは、C++では好ましくないと思うよ。

02202142009/10/11(日) 13:13:40
thread_groupは抱えているスレッドが終了したからといって削除はしないでしょ?
それをやるとしたらthread_groupは内部で監視用のスレッドを立てているか抱えるthreadとsignal/slotで接続されているかだと思う。
さっきから初心者と思われる人がレスしてくれているけど・・・。
0221デフォルトの名無しさん2009/10/11(日) 13:15:49
- 結果としてBASICが根幹にあるんですね。
  どうしてでしょうか。

簡単で手軽、誰にでも学習の機会があることでしょうね。
CやHSPだとこうはいきません。

CやHSPだとAPIのノウハウが必要になりますし、それは大きな障壁となります。
0222デフォルトの名無しさん2009/10/11(日) 13:22:29
>>221
DarkBASIC厨うざい
こんな所にまで誤爆すんな
0223デフォルトの名無しさん2009/10/11(日) 13:23:14
- それはCやHSPでもAPIや外部のDLLを使えば簡単にできるでしょう?

確かにそのとおりです、しかしH.O.H.の問題は解決できません。
0224デフォルトの名無しさん2009/10/11(日) 13:31:24
>>220
じゃあ、ためしてみれ
02252142009/10/11(日) 14:15:02
やっぱりthread_groupのサイズは抱えているスレッドが終了しても変わんないよ。
何で試さなきゃいけなかったのw?
0226デフォルトの名無しさん2009/10/11(日) 14:31:44
detachしたいのかな?
0227デフォルトの名無しさん2009/10/11(日) 14:55:32
newせず自動変数でboost::thread作ったらだめなの?
boost::threadのデストラクタはdetachするだけで、実行中のスレッドが強制的に終了させられることはないよ。

それが嫌なら、boost::this_thread::at_thread_exitでも使ってスレッド終了時にdeleteするようにするのはどう?
0228デフォルトの名無しさん2009/10/11(日) 14:56:24
void f() {}
...
{ // local scope
boost::thread(f).join();
}

newなんてどこから出てきた?
0229デフォルトの名無しさん2009/10/11(日) 15:16:49
newならうちの裏山にいっぱい生えているよ
0230デフォルトの名無しさん2009/10/11(日) 15:34:22
>>228
ようするに214は、そこでjoinしたくないだけだと思う。

newは216で初出。まさかとは思うけど、Javaとか言っているし、
クラスオブジェクトを自動変数にできることを知らない可能性があると感じた。
0231デフォルトの名無しさん2009/10/11(日) 16:48:32
前スレにいたヒープとスタックの区別がついてない人かな?
0232デフォルトの名無しさん2009/10/11(日) 16:59:00
今、プログラムを勉強してます。
スレをざっと読んで、C++がプログラミング言語だということは理解できました。
JAVAもプログラミング言語でしょうか、それともダイレクトXのようなアプリケーションなのでしょうか?
0233デフォルトの名無しさん2009/10/11(日) 17:03:24
なんというツッコみどころの山
0234デフォルトの名無しさん2009/10/11(日) 17:06:13
>>232
スレ違いです。その質問は以下へどうぞ。

スレ立てるまでもない質問はここで 101匹目
http://pc12.2ch.net/test/read.cgi/tech/1254843018/
0235デフォルトの名無しさん2009/10/11(日) 18:53:50
thread_groupのサイズってなんだ?
0236デフォルトの名無しさん2009/10/11(日) 19:28:48
Javaしか出来ない馬鹿を相手にしちゃ駄目よ
0237デフォルトの名無しさん2009/10/11(日) 19:34:36
boost::threadのドキュメント嫁
0238デフォルトの名無しさん2009/10/11(日) 19:41:47
うんうん、こいつはちょっと前にもいたJa馬鹿に違いあるまい。
0239デフォルトの名無しさん2009/10/11(日) 20:46:11
Java房ほんとうぜーな
>さっきから初心者と思われる人がレスしてくれているけど・・・。
>何で試さなきゃいけなかったのw?
人に聞く態度じゃねーだろw
どっちが初心者だよ(;´Д`)
0240デフォルトの名無しさん2009/10/11(日) 21:09:17
約15年C++一筋だったけどもうC#に乗り換えるわ
C++/CLIを使い続けることに疑問を感じてしまった
0241デフォルトの名無しさん2009/10/11(日) 21:13:33
はいはい次の患者さんどうぞ。
0242デフォルトの名無しさん2009/10/11(日) 21:14:16
C++/CLIなんて使わないというか
乗り換えるとか言ってる奴は同時に使える言語が一個しかないの?
0243デフォルトの名無しさん2009/10/11(日) 21:17:15
C++のつもりでC#のジェネリックスを使おうとするとかなりダメージ受けるよな。

T min<T>(T lhs,T,rhs)が作れねえorz
typedefがねえorz
0244デフォルトの名無しさん2009/10/11(日) 21:20:49
C#って
typedef std::vector< A > A_collection;
が出来ないだっけ?
だとしたら致命的だったりする。
0245デフォルトの名無しさん2009/10/11(日) 21:23:48
usingでそれっぽくはできる
0246デフォルトの名無しさん2009/10/11(日) 21:24:53
そうなのか。
C++03にtypedefテンプレートがない事にさえ相当苛ついてるのに
C#に移行したら発狂するな。
早く0xに開発環境移行したいよー。
0247デフォルトの名無しさん2009/10/11(日) 21:26:35
>>244
そうできないんだ。typedefがないからA_Collection::value_typeのようなこともできないんで、Aを明示しないといけない。

かなり苦戦する。
0248デフォルトの名無しさん2009/10/11(日) 21:32:36
template慣れるとほかの言語でしんどいよねー
0249デフォルトの名無しさん2009/10/11(日) 21:51:22
> 同時に使える言語が一個しかないの?

手広くやってる余裕あるか? ふつー

自らのポテンシャルの限界を晒すようでアレだが
歴史上の各時点では1言語だけ突出してて他は教養程度にならざるを得ない
0250デフォルトの名無しさん2009/10/11(日) 21:56:31
ひとつの言語しか知らなかったら解決方法が狭まるからね。

解決のヒントを多く持っておくのは悪いことではないよ。
0251デフォルトの名無しさん2009/10/11(日) 22:13:00
C++の限界だと思ってたけど単に昔の自分の限界でした、ってことはよくある
0252デフォルトの名無しさん2009/10/11(日) 22:14:37
真逆だろC++はやろうと思えば何でも出来る
そこが最大の欠点
■ このスレッドは過去ログ倉庫に格納されています