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


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

C++相談室 part69



1 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 21:04:54 ]
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレに
お願いします。

前スレ
C++相談室 part66
pc12.2ch.net/test/read.cgi/tech/1231640498/

※part63, part66 が重複していたようですので part69 としました。

252 名前:デフォルトの名無しさん mailto:sage [2009/05/15(金) 22:09:27 ]
仕事なんてなかった

253 名前:デフォルトの名無しさん mailto:sage [2009/05/16(土) 22:00:39 ]
ISOのC++の2003年の規格のJISは訳がひどいですね。
原文の構成もひどいけど。
規格をもっと読みやすくしたような、同じだけ詳しい本ってあるんでしょうか?

254 名前:デフォルトの名無しさん mailto:sage [2009/05/16(土) 22:06:55 ]
無いから我慢して読め

255 名前:デフォルトの名無しさん mailto:sage [2009/05/16(土) 22:15:03 ]
規格書の文章なんてどれもああいうもんだよ。
訳が酷いわけじゃない。

256 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 01:01:57 ]
C++は規格自体がひどいから文章もひどくなる

257 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 01:56:44 ]
C++の文法があまりに酷いもんで翻訳者もイライラしながら
訳してたんじゃないか?w

258 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 02:35:49 ]
どのくらいメモリを使っているかという情報は型が持っているのだから
例えば、char[3] 型の最初の要素のアドレスをchar*型に代入したら
もうメモリサイズがわからなくなるのは当然といえば当然。
char[3] 型を char[3] 型に代入する分にはちゃんとサイズがわかる。

という感じかしら

259 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 04:11:03 ]
変数の型も含めてすべてをクラスにってのがJava以降に導入されたもんだからね

260 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 04:25:19 ]
それは別にJavaで初めてというわけじゃないだろ。




261 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 08:18:01 ]
Javaも全てがクラスというわけでもないし。

262 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 08:57:46 ]
全てがクラスになる


unlambdaやれば全てが関数だからオススメ。

263 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 09:49:55 ]
C++の一行の文字数って標準仕様上、制限ありますか?
またあるとして、現実的に気にした方が良いですか?


264 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 10:53:44 ]
>>263
言語仕様としてはメモリの許す限りおk

265 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 10:56:29 ]
メモリの許す限りという制限すらない無制限

266 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 11:16:18 ]
ありがとうございます。
じゃあ気にせず行きます!

267 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 11:29:51 ]
80文字が一つの目安だな。
120文字超えてたらちょっとイラッとする。

268 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 11:32:26 ]
クラスのメンバ関数の返り値は
コピー返しでも可能ならconstにしろ

とEffective C++で言われていましたが、
なぜか返り値がbool型だけはconst付けない風習がありません?
例: bool is_valid() const {return member?true:false;}
この場合も返り値にconst付けた方が良いのでしょうか?

269 名前:デフォルトの名無しさん [2009/05/17(日) 11:34:17 ]
付けた方がいいよ。

270 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 11:54:31 ]
>>268
メリットはなに?



271 名前:268 mailto:sage [2009/05/17(日) 11:58:07 ]
>>269
そうですよね。ありがとうございます。

>>270
組み込み型の返り値を万が一変更するバカが居た場合の予防です。

272 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 12:12:37 ]
>組み込み型の返り値を万が一変更する
なんてできません。

馬鹿って言う人が馬鹿なんだぞw
ちゃんと読もうぜ。

273 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 12:25:20 ]
メリットは記述の統一感かな?
テンプレート引数にするときにいいことってある?

自分は組み込み型にはconst付けない派だな

274 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 12:34:53 ]
それ書いてあるのってEffecitve C++だっけ? Exceptionalかなんかのほうだった気がするが。

275 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 12:35:35 ]
> テンプレート引数にするときにいいことってある?
全くない。

むしろ
組み込み型戻り値のconstは
環境によってはwarningやerrorになるから
うっとうしいことこの上ない。




276 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 13:02:35 ]
constな自クラス型参照メンバなんか使いだすと有りとあらゆる宣言にconstが波及して`err passing〜'の楽しい事になるんだよね。

277 名前:271 mailto:sage [2009/05/17(日) 13:06:18 ]
>>272
> >組み込み型の返り値を万が一変更する
> なんてできません。
有名どころのコンパイラならちゃんとコンパイルエラー出してくれるみたいですが
環境が違っても確実に予防してくれるのでしょうかね?

>>274
Exceptional C++だったかもしれません。


>>275
gccやboostの実装でも確かに組み込み型の戻り値にconstは付いていないようですね。



278 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 13:59:47 ]
そもそも「組み込み型の返り値を万が一変更する」って
どういう意味なの?

279 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 14:00:46 ]
public継承は分かる。
private継承も分かる。

ではprotected継承は?
使ったことある人います?(遊びじゃなく実用で。)

280 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 14:17:27 ]
だからちゃんと嫁ってば。

Effecitve C++ 2ndの21節と29節に書いてあるのは、
非組み込み型のコピーを返す関数を左辺値として使われないように、
左辺値になり得る型が戻り値の場合はconst付けよーねってことと、
const宣言したメソッドがデータのハンドル(stringクラスのcharポインタとか)を
返却するときは戻り値にconst付けよーねってこと。

わざわざ押し入れからEffectiveC++取り出してきた俺に
プッチンプリン買ってこいw

>環境が違っても確実に予防してくれるのでしょうかね?
ぶっ壊れたコンパイラの話をされても困る。



281 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 14:18:55 ]
じゃあ俺はなめらかプリンでよろしく

282 名前:271 mailto:sage [2009/05/17(日) 14:33:58 ]
>>280
サーセン。吊って来ます。

ありがとうございました。

283 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 14:35:03 ]
constの同音異義語っぷりもなかなか見事なものだ

284 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 17:10:42 ]
>>280
非組み込み型の戻り値について const つけてあると、右辺値参照として取れなくなっちゃいそう。
この指針は将来的に非推奨になるんじゃなかろうか?

285 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 17:52:26 ]
そもそも右辺値参照自体が、
Effective C++で問題が広く知れ渡ったことで
実装されることになったんじゃないかな。

ぷらぷら界に多大な影響を与えた引き替えに、
次の版は全面改定だな。

286 名前:デフォルトの名無しさん [2009/05/17(日) 17:55:23 ]
cppunitに関する質問ってありですか?

287 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 17:56:06 ]
>>286
専用スレがあるから、まずはそっちで。

CPPUnitについて少し話そうかい
pc12.2ch.net/test/read.cgi/tech/1042358524/

288 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 18:07:21 ]
互換性考えたら右辺const値のオブジェクト代入は右辺値参照を無視してコピー噛ますんじゃないかな

289 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 18:09:03 ]
そう。だから右辺値参照を使って最適化しているつもりが、うっかり今までどおりの
コピーになったりすることが考えられる。まぁ最適化の範疇と認識する分には問題には
ならないんだろうけど。

290 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 19:44:11 ]
右辺値参照って、なんだかよく分からない。
C++0xが出れば解説も増えるかな?



291 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 20:32:36 ]
僕もよく解らないけど、関数の返すオブジェクトがコピーされるとき、
もとのオブジェクトが捨てられる場面で、
コピーコンストラクタを呼ばないでよりコストの低い破壊的なコピー、
つまりオブジェクトのメンバを移動することをするってことなんでしょ?
ただそれだけでしょ?

292 名前:290 mailto:sage [2009/05/17(日) 21:12:34 ]
現在 標準C++のコンパイラの最適化機能として実装されている
 戻値最適化
とは違うのかいな?

C++ ラビリンス Return value and constructor
ttp://www.fides.dti.ne.jp/~oka-t/cpplab-retval-ctor.html


293 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 21:12:36 ]
そうそう、「移動」の概念(ムーブセマンティクス)を容易に実現するための言語仕様として考え出されたのが右辺値参照。
ほかに分かりやすい例を挙げるとしたらauto_ptr(の後継)がvectorに入れられるようになることとか、
functionやbindなどで各引数のconstや参照の有無の挙動を完全に再現したoperator ()を実現できるなんて効果がある。

294 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 21:27:43 ]
多次元配列の要素全てを任意の値で埋めたい場合
どう書くのが良いでしょうか。
1次元の場合は std::fill や std::fill_n が使えるのですが。

int a[10][10];
for(int i=0; i < 10; i++)
for(int j=0; j < 10; j++)
a[i][j] = 42;

ということをしたいわけです。

295 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 21:28:25 ]
>>292
最初の例や2番目のコピーコンストラクタ・代入演算子が呼ばれる例でもムーブセマンティクスは効く。
そこのコピーコンストラクタ・代入演算子の呼出が、ムーブコンストラクタ・代入演算子の呼出になる。
一般にムーブコンストラクタ代入演算子はコピーコンストラクタと違って、
それより遙かに低コストで例外の投げようもない実装になるので、より最適なコードになるとされる。

296 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 21:31:12 ]
>>294
自分で書いてるじゃねーか。何が不満なの?

297 名前:デフォルトの名無しさん [2009/05/17(日) 21:34:04 ]
酒鬼薔薇

298 名前:290 mailto:sage [2009/05/17(日) 21:34:39 ]
>>295
ほっほー。
そうなのかぁ。
ありがとう。C++0xが楽しみになって来たんだぜ。

299 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 21:46:45 ]
いや普通に

 memset(a, 42, 100);

で、いいんでない。string.h が使える環境なら



それより最近、スザンヌとギャル曽根の区別が付かなくて困ってます
見分け方を教えてください

300 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 21:47:47 ]
>>299
int に memset() して 42 になるとでも思ってんのか?



301 名前:299 mailto:sage [2009/05/17(日) 21:47:53 ]
アンカー忘れ。>>294 な

302 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 21:51:12 ]
>>299
これはひどい。

303 名前:299 mailto:sage [2009/05/17(日) 21:52:38 ]
すまん。レス取り消し。int だったね

回線切って(ry


304 名前:299 mailto:sage [2009/05/17(日) 21:53:52 ]
>>301-302
仕事速いな。暇人

305 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 22:04:38 ]
>>304
お前の方がよっぽど暇人に見えるんだが

306 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 22:11:27 ]
>>294
その配列だったら連続性が保証されてるから
std::fill_n(&a[0][0], 100, 42)
でいいだろ。

307 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 22:12:15 ]
>>294
お好きなほうをどうぞ。
std::fill_n(&a[0][0], sizeof a / sizeof a[0][0], 42);

namespace bll = boost::bind;
std::for_each(a, a + sizeof a / sizeof a[0], bll::bind(std::fill_n<int*, std::size_t, int>, bll::_1, sizeof a[0] / sizeof a[0][0], 42));

308 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 22:23:24 ]
>>307
std::fill_n(first, n, val) は [first, first + n) に対しての操作だから
要素数でOK。sizeof a / sizeof a[0][0] は冗長。

309 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 22:26:42 ]
それも要素数・・・

310 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 22:28:14 ]
g++にてテンプレートに暗黙の型変換を絡めたら分からなくなったので教えてください。

C++ code - 60 lines - codepad
ttp://codepad.org/l7pocEaw
このソースコードでは50行目hoge < short(1)の部分で
error: no match for 'operator<' in 'hoge < 1'
と言われてしまいます。どうやら暗黙の型変換がうまくいかないようです。

これを改変してForward declarationを無くして代わりにクラステンプレートの内部で friend 関数を定義することで回避できます。
C++ code - 49 lines - codepad
ttp://codepad.org/F0VomJTk

しかし、どうして前者のソースコードでは暗黙の型変換がうまくいかないのでしょうか?





311 名前:294 mailto:sage [2009/05/17(日) 22:30:18 ]
みなさまありがとうございます。

std::fill_n(&a[0][0], sizeof a / sizeof a[0][0], 42)

がよさそうですね。勉強になりました。



312 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 22:39:30 ]
>>309
だから、要素数が既知なのに一々冗長に書くことないってこと。

313 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 22:42:54 ]
>>312
「要素数が既知」ということに依存したコードにするほうが面倒なこともあると覚えておけ。

一般的には、保守性のほうが一回だけの記述の利便よりも重要だ。

314 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 22:45:14 ]
>>313
何頭に血を登らせてるの?
質問者が提示したコードで要素数が定数になってたんだからそれでいいだろ。
不明な場合に要素数を計算するのは当然のこと。

315 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 22:45:22 ]
>>312
マジックナンバーは避けるべきだろjk
const N = 10;
int a[N][N];
なんてしているならsizeofを使わずにNと書いてもいいとは思うけど。

316 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 23:08:17 ]
そういう本質でない話はもういい

317 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 01:54:38 ]
template<T,U>void fill(T (&d)[U],T v){for(unsigned i=0;i<U;++i)d[i]=v;}
template<T,U0,U1>void fill(T (&d)[U0][U1],T v){for(unsigned i=0;i<U0;++i)for(unsigned j=0;j<U1;++j)d[i][j]=v;}

マジックナンバーイラズサイテキ化キタイダイ
int a[10][10];
double b[10];
fill(a,0);
fill(b,0.0);

318 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 02:07:27 ]
オナニーレスうぜえな
ループを書きたくないってのが本題なのに、それじゃ本末転倒だろうが

319 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 02:22:32 ]
>>318
何いってんの?
ライブラリって知ってる?

320 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 02:57:44 ]
>>310
暗黙の型変換はテンプレートを具象化しなければならない時には行われないから
んで、どうすればいいかというと後者のようにすればいい
Effective C++の46項に詳しく書いてあるよ



321 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 03:25:03 ]
>>284,285,288,289
C++0x の話としては,戻り値の型が const 修飾されていると
move 出来ない (immutable な右辺値になる) ので,
Effective C++ の記述がやや古くなるのはその通りだと思います.

C++0x 的には, EC++ のこの記述は
恐らく "Extending move semantics to *this" と
"Defaulted and Deleted Functions" との組み合わせに置き換わるべき話だと思います.

322 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 03:56:14 ]
C++が苦手なCプログラマなのですが、ちょっと質問です。
ファイル内の文字列を探すプログラムです。
これをC++で書くとしたらこの程度でもクラスを作るのですか?
#include <stdio.h>
#include <string.h>
int main(int ac, char * av[])
{
 //ファイルからメモリーに読み込み
 FILE * fp = fopen("文字列が入ったファイル", "r");
 fseek(fp, 0, SEEK_END);
 int fSize = ftell(fp);
 fseek(fp, 0, SEEK_SET);
 char * buf = (char *)malloc(fSize);
 fread(buf, 1, fSize, fp);
 fclose(fp);
 //さがす
 char ss = "abcde";
 int ss_len = strlen(ss);
char * p = buf;
 for (int i = 0; i < fSize - ss_len; i++) {
  if (strncmp(ss, p, ss_len) == 0) {
   printf("%d番目に見つかりましたよ\n", i);
   return 0;
  }
  p++;
 }
 free(buf);
 return 0;
}



323 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 04:00:29 ]
おれはc++のOOP が標準だから、特別な理由が無い限りOOPで書く。
英語で育った人は、特に何も考えずに英語会話するのと同じ

324 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 04:03:57 ]
その程度だと、既存のクラスを使うだけで出来上がるね。つまり、クラスを作る出番ではないと。

極論すればクラスってのは作るものというより使うもの。

325 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 04:09:51 ]
それに、mallocをfreeしてないでしょ、終われば開放するけど、
それはたまたま短いプログラムだから、OOPだと、明示的にディストラクタがある。
まあ使わなきゃ意味無いけど、私はこれも標準で書いてしまう。だから少し安心なわけ。
それに、そのプログラムはバッファーオーバランしないようだけど、それも、保護されやすい。
ただし、標準でOOPが身についてるからであって、人によってはOOPでもいくらでも汚くかける。

326 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 04:13:16 ]
あ、ごめ freeしてた orz

327 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 04:14:40 ]
いや…、Cはもう、身についてないから…と言い訳する  orz orz orz

328 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 04:16:55 ]
一人で無駄に4レスも使いやがって

329 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 04:17:57 ]
俺はその程度ならclass内でやったりしないな。FILEも普通に使うし。

ただ、バッファはvector<char>で確保するし
探索も文字列探索クラス(BM法とか)を作って実行するね。

処理自体は(mainには限らないが)普通の関数に置く。
ただこれは当然「ファイル内の文字列探索が処理の全て」の場合。
何らかのclassの処理の中でファイル内探索を必要とする時は、当然そのように書く。

330 名前:310 mailto:sage [2009/05/18(月) 05:52:46 ]
>>320
Effective C++では後者の方式が天下りに与えられていました。

あくまで前者のような方式(実装をクラス宣言部分に書かない)
で解決する方法はありませんか?
(後者の方式でprivate宣言されたヘルパー関数を呼び出すという回避策もありますけれど。)




331 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 05:56:50 ]
>>325
destructor
はディストラクタではなくデストラクタね。発音的にも用語的にも。
ディスクトップでなくデスクトップなのと同じで。



332 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 10:51:25 ]
>>330
関数が2つになっちゃうけど、
クラス内に
template<typename T> friend bool operator <(const Hoge &lhs, T rhs);
template<typename T> friend bool operator <(T lhs, const Hoge &rhs);
って書けば、関数テンプレートの定義を外に書けると思う…たぶん

それか、関数テンプレートをやめて定義を特殊化して書いてもいけるんじゃないかな。

間違ってたらサーセン

333 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 16:13:37 ]
>>322 を見て思ったんですが、
ファイルを読み込み文字列検索するだけでこんな長く分り難いにコードにえーって感じなんですが、
C++を使って書くとこれより短く解りやすいコードになるんですか?
それはどんな感じになるんですか?

>>322 で
printf("%d番目に見つかりましたよ\n", i);
return 0;
ここでreturnしているんですが、ここではfreeしなくて良いんですか?

334 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 16:41:01 ]
>333
main() {system("grep abcde 文字列が入ったファイル");}

>free
リークしていないので問題ないが、姑に目を付けられる。

335 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 16:53:00 ]
でも突然サブルーチンに昇格する可能性もあるから、
常にfreeした方がいいよ。

336 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 17:02:55 ]
>>334
>free
見つかった時、見つからない時の両方でfreeしないなら良いけど
片方しかしてないって、C使いらしくないんじゃない?
短いコードでたった2箇所を管理するだけなのに、それすら出来ないなんて

337 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 17:55:44 ]
freeの仕様について言及しただけで、
>>322のソース自体に文句付けるなら
もっといろいろあるだろ。

338 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 21:07:11 ]
return 0; を break; に置き換えるとか?

339 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 21:14:11 ]
ファイルを一気に読むのが好きになれない、俺なら1行ずつの処理にする。

340 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 21:15:00 ]
配列まではすんなり頭に入ったけど、ポインタとかクラスのメンバ関数とかわけわかんねー・・
なんにしても作りたい物が無ければ頭に入らない気がしてきたんだけど、ドリルみたいなものって無いですか




341 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 21:16:19 ]
宿題スレに山ほど

342 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 21:19:51 ]
こんなスレあったのか、ありがとう

343 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 21:35:44 ]
>>341
宿題スレはいいよな
糞問ばっかりだけど最初のうちは数こなす方が大事だし

344 名前:310 mailto:sage [2009/05/18(月) 23:20:37 ]
>>332
なるほど。
やはり関数を1つにまとめ、かつ
(特殊化をすると妨げられる)汎用性を保とうとするならば
Dan Saksの
More C++ Idioms/friend 関数の生成(Making New Friends) - Wikibooks
ttp://ja.wikibooks.org/wiki/More_C%2B%2B_Idioms/friend_%E9%96%A2%E6%95%B0%E3%81%AE%E7%94%9F%E6%88%90(Making_New_Friends)
すなわちEffective C++でいう後者の方式しかないようですね。

ありがとうございました。

345 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 23:30:53 ]
次はコナン風で頼む。

346 名前:デフォルトの名無しさん [2009/05/18(月) 23:32:24 ]
どっちのコナンだよ

347 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 23:43:35 ]
やってくれるのか?
わくわく

348 名前:デフォルトの名無しさん mailto:sage [2009/05/19(火) 01:23:32 ]
コナン・ザ・グレート風で頼む。

349 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 23:15:48 ]
クラス中の宣言の中でメンバ関数の定義をした場合、
自動的にinline展開要請になるんだよね?

では
クラス中の宣言の中でfriend関数の定義を記述した場合、
inline展開要請になるのかい?


350 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 23:32:49 ]
^^



351 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 23:35:26 ]
inline展開陳情のほうがいいかも。

352 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 23:49:36 ]
俺のBCC 6.1.0ではオプションを付けない限り inline は全部無視される\(^o^)/

デバッグの時の事を考えてだと






[ 続きを読む ] / [ 携帯版 ]

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

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