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

C++相談室 part85

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2010/10/09(土) 20:22:35
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレに
お願いします。

前スレ
C++相談室 part84
http://hibari.2ch.net/test/read.cgi/tech/1284736187/
0951デフォルトの名無しさん2010/11/05(金) 00:54:50
>>935
create_Hoge が const になってない。しね
0952デフォルトの名無しさん2010/11/05(金) 00:55:47
>>950
operator()を持ってないならbindすればいいじゃない
>>946のようにif文がめんどいならfunctionをコンテナに突っ込んで
識別子を定義するなりして生成関数を登録すればいい
たしかLokiのFactoryはそれに近いことをやっていたはず
とはいえ、functionに期待するのは遅延実行だから
commandパターンやboost::signalのようにobserverパターンだと思うけど

>>941
デザパタの実装なんていくらでもあってキリがないから
GOFスレでやったほうがいいと思うんだけどね
まあ、あのスレはオレは見てないけどw
0953デフォルトの名無しさん2010/11/05(金) 00:57:56
昨晩はCスレが炎上してたけど今宵はC++スレか┐(´ー`)┌ヤレヤレ
0954デフォルトの名無しさん2010/11/05(金) 01:04:46
俺がくらだない質問してしまったからだ、、、ごめんなさい
0955デフォルトの名無しさん2010/11/05(金) 01:07:45
>>952
いや、そうじゃなくて
factory.clear_pool();
みたいなメンバ持たせたいこともあるでしょや
functionだとそういう時困る
0956デフォルトの名無しさん2010/11/05(金) 01:56:58
>>955
それはFactory Method パターンにふくまれるか?
0957デフォルトの名無しさん2010/11/05(金) 03:27:56
>>956 無意味な質問だな
0958デフォルトの名無しさん2010/11/05(金) 10:08:59
クラスを作るときに使うサブシステムのソースをサブフォルダに纏めて
名前衝突を回避するために名前空間をディレクトリ構成に一致するようつけてたら
階層が深くなりすぎて名前空間が激長になってしまった
なんか良いプロジェクト構成管理方法は無いものか
0959デフォルトの名無しさん2010/11/05(金) 10:24:53
あるよ
0960デフォルトの名無しさん2010/11/05(金) 13:07:07
>>958
あちゃー やっちゃったね
Java上がりの人がプロジェクト規約を作ったりすると
犯しやすい致命的な間違いだよそれ。
C++の名前空間はJavaのパッケージみたくは使えないから。
ご冥福をお祈りします。
0961デフォルトの名無しさん2010/11/05(金) 13:20:57
別に普通にやるだろ。
深くすれば長くなるのは当たり前なんだからもう少しフラットに区分すりゃいいだけ。
長くても使う時にusingなりtypedefすりゃいいだけ。
0962デフォルトの名無しさん2010/11/05(金) 13:23:03
usingが必要になるってことは設計が間違っているとか言い出す輩↓
0963デフォルトの名無しさん2010/11/05(金) 14:43:59
特殊化でクラスを分ける場合、<int a>でわけるのと
<T a>で分けるのとどっちが良いんですか?
0964デフォルトの名無しさん2010/11/05(金) 14:45:02
特殊化でクラスを分ける場合、<int a>でわけるのと
<typename T>で分けるのとどっちが良いんですか?
Tとaはクラスで使わないとします。
0965デフォルトの名無しさん2010/11/05(金) 14:53:39
いずれにしても糞設計の悪寒。
0966デフォルトの名無しさん2010/11/05(金) 15:02:28
>>964
一般的には、 typename T のほうが衝突の回避や意図の明示が
しやすくていいと思うよ。

引数の意味によっては int が適切なことがあるかもしれないけど、
どちらかというと稀だと思う。
0967デフォルトの名無しさん2010/11/05(金) 15:53:02
あざーす
0968デフォルトの名無しさん2010/11/05(金) 15:59:35
あざーすって馬鹿っぽいからやめろよ
0969デフォルトの名無しさん2010/11/05(金) 16:01:03
あざーした
0970デフォルトの名無しさん2010/11/05(金) 16:07:15
あざっすでありんす
0971デフォルトの名無しさん2010/11/05(金) 16:11:13
モジュールごとにフォルダ作って階層は一段階だけ
サブモジュールが使いたければプロジェクトルートからのパスでインクルードする
名前は::プロジェクト名::モジュール名::〜〜
これで完璧だろ
0972デフォルトの名無しさん2010/11/05(金) 16:27:53
理想的には構造と実装の分離が望ましいだろ。
実装に対して構造がいくつも存在することが出来れば
ソートしたりバラバラにしてまた組み立てたり色々なことができるよ。
0973デフォルトの名無しさん2010/11/05(金) 17:45:01
ライブラリならともかく
応用アプリだとなかなか難しいよ
0974デフォルトの名無しさん2010/11/06(土) 00:01:09
constな配列を作りたいのですが、
配列の宣言と同時に初期化できないので、
最初に一度だけ書き換えたいのです
どうすれば良いでしょう?
0975デフォルトの名無しさん2010/11/06(土) 00:04:52
const_castして


死ぬ
0976デフォルトの名無しさん2010/11/06(土) 00:04:55
comとc++は仲がいいみたい?だけどさ、結局comってなんなのよ
システムetc etcのapiを使うために、インターフェイスを実装するってだけの話でしょ
0977デフォルトの名無しさん2010/11/06(土) 00:17:49
>>976
ttp://ascii.asciimw.jp/pb/bookmart/pdf/47561/4756130666.pdf
これ読めばいいかと
糞長いけど
0978デフォルトの名無しさん2010/11/06(土) 00:37:16
std::string s = "string";
このようにstringを宣言した場合、
char *c = "strings";
std::string s(c);
と解釈されるのですか

それとも、"string"と書いただけでstringに解釈されるのですか
0979デフォルトの名無しさん2010/11/06(土) 00:38:14
!?
0980デフォルトの名無しさん2010/11/06(土) 00:40:41
10回ぐらい読んだ
09819782010/11/06(土) 00:41:27
いやね
char *c = "strings";
std::string s(c);
こんな感じで解釈されるならば
Hoge h[] = {"s1", "s2", "s3"};が
Hoge h[3];
h[0] = Hoge("s1");
h[1] = Hoge("s2");
h[2] = Hoge("s3");
みたいに書けるじゃないかな〜と思ったの
0982デフォルトの名無しさん2010/11/06(土) 00:50:21
その二つは別物だろ
0983デフォルトの名無しさん2010/11/06(土) 01:25:41
>>976
元々は言語を問わず相互利用可能なインターフェイスを提供するレイヤーだろ。
その先にはCORBAのような分散オブジェクト技術としてCOM+までの流れがあるわけだけれども大して使われず.NETと被ってグダグダに。
0984デフォルトの名無しさん2010/11/06(土) 01:29:48
>>978
ttp://codepad.org/fTfweFbp
なんかひでえ結果が。
0985デフォルトの名無しさん2010/11/06(土) 01:51:19
>>974
const な配列へのポインタを置いといて、値が決まったところで配列を生成して
ポインタをセットすればいい。
0986デフォルトの名無しさん2010/11/06(土) 01:53:54
>>981
後者のように書けて何がうれしいのかわからない。それと >>978 の質問の関連もわからない。
0987デフォルトの名無しさん2010/11/06(土) 01:55:47
>>984
スレ違いだけどそういう時こそC++0xの右辺値参照が生きてくるんだよな
一次オブジェクトなんかどうせ捨ててしまうんだからいっそのことmoveさせて
しまおうという
0988デフォルトの名無しさん2010/11/06(土) 01:57:22
×一次
○一時
0989v(^・^)v2010/11/06(土) 01:58:06
次スレ建てるんでしばらくレス自重されたし
0990v(^・^)v2010/11/06(土) 02:26:38
次スレ

C++相談室 part86
http://hibari.2ch.net/test/read.cgi/tech/1288976595/
0991デフォルトの名無しさん2010/11/06(土) 06:59:48
梅
0992デフォルトの名無しさん2010/11/06(土) 08:10:09
次スレ

C++相談室 part86
http://hibari.2ch.net/test/read.cgi/tech/1288976595/
0993デフォルトの名無しさん2010/11/06(土) 11:43:33
92 名前:デフォルトの名無しさん[sage] 投稿日:2010/11/06(土) 08:10:09
次スレ

C++相談室 part86
http://hibari.2ch.net/test/read.cgi/tech/1288976595/
0994デフォルトの名無しさん2010/11/06(土) 17:32:04
uma
0995デフォルトの名無しさん2010/11/06(土) 17:32:45
梅毒
0996デフォルトの名無しさん2010/11/06(土) 20:29:29
梅名イカ
0997デフォルトの名無しさん2010/11/06(土) 20:32:22
うんこ
0998デフォルトの名無しさん2010/11/06(土) 20:39:10
ぬるぽ
0999デフォルトの名無しさん2010/11/06(土) 20:48:26
次スレ

C++相談室 part86
http://hibari.2ch.net/test/read.cgi/tech/1288976595/
1000デフォルトの名無しさん2010/11/06(土) 20:49:07
1000
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。