09/03/04 17:20:51
>>271
標準にはない
標準じゃなくていいならある
273:デフォルトの名無しさん
09/03/05 09:53:35
assert()と_ASSERT()ってなにか違いがあるのでしょうか?
274:デフォルトの名無しさん
09/03/05 10:11:11
assertはC/C++標準
結果としてabort()
_ASSERTはVC++独自
_CrtSetReportMode等で動作の調整が可能
275:デフォルトの名無しさん
09/03/05 18:14:15
メンバ関数のポインタの宣言はCxxx::*funcなのに
取得はCxxx::&funcでなく&Cxxx::funcなの?
&がなんで宣言の時の*の位置より移動するの?
276:デフォルトの名無しさん
09/03/05 18:40:47
>>275
発想としては、Cxxx::という修飾が
メンバへのポインタ型では*にかかっていて、
メンバへのポインタを得るときには、メンバ名funcにかかっている
ということのようだ。
277:デフォルトの名無しさん
09/03/05 18:51:32
俺としては逆なんだが
なんでCxxx::&funcなの?
どこのクラスのメンバ関数のアドレスか分からんが
278:デフォルトの名無しさん
09/03/05 20:41:28
大変だー
さっぱりわからん
279:デフォルトの名無しさん
09/03/05 20:43:44
>>278
何が分からないんだかさっぱり分からないぞ
280:デフォルトの名無しさん
09/03/05 20:44:43
>>275
単に文法的な曖昧さを除いた結果そうなっただけ。
class A {
public:
static void (*A::func)();
};
としてしまうと、static メンバ変数の実体定義がこうなってしまう。
void (*A::A::func)();
どっちがどっちの A:: やら分からん。
281:デフォルトの名無しさん
09/03/05 21:16:46
もうクラスのメンバ関数のポインタは無しで
282:デフォルトの名無しさん
09/03/05 22:09:09
9割くらいBoostやTR1のbind(暗黙のmem_fun)と一緒にしか使わない。
283:デフォルトの名無しさん
09/03/05 22:41:19
delegate パターンで使うね
284:デフォルトの名無しさん
09/03/06 01:31:13
じゃあdeleteパターンで
285:276
09/03/06 19:49:52
>>276, >>280
すみません、レス読んでも、それが
取得はCxxx::&funcでなく&Cxxx::funcなの?
の回答になるのか、さっぱり理解できないですが><
あと、&Cxxx::funcは&(Cxxx::func)としては良くないと本に書いてあるんですが
なんで良くないんですか?
286:デフォルトの名無しさん
09/03/06 20:12:15
なんか抽象クラスをインスタンス化できないらしいのですがどうすればいいですか?
派生クラスは無いのですが
その派生クラスの無い抽象クラスが型な引数をとる関数を使いたいのですが初期化?の方法がわかりません
287:デフォルトの名無しさん
09/03/06 20:16:31
>>286
まずは、その抽象クラスへのポインタ型か参照型を引数にしている?
288:デフォルトの名無しさん
09/03/06 20:24:22
>>287
ポインタ型を宣言してます、いろいろ上手くいかなかったのでポインタで宣言、元の抽象型で宣言、アドレスをポインタ型に代入→引数に
としてます、エラーメッセージはメンバが抽象型です、宣言を確認してください、です
289:デフォルトの名無しさん
09/03/06 20:27:48
>>286
派生クラスがない、ではなく、派生クラスは自分で作れということでは?
290:デフォルトの名無しさん
09/03/06 20:29:59
ああ、そうかもしれない
291:デフォルトの名無しさん
09/03/06 20:43:25
"派生クラスの無い抽象クラスが型な引数をとる関数"
これ、抽象クラスのインターフェイスを使って新しいクラスを作れということ
292:デフォルトの名無しさん
09/03/06 20:56:18
覚えておきます、ありがとうございました