>>642 どうでもいいことだけど追記 constメンバ変数や、メンバ変数が参照型のときなど、 「代入」ではなく「初期化」しなければならないときには初期化リストを使わなければならない。 そうでなくても、初期化の方がコスト面で優れているので、常に初期化リスト使うのおすすめ。 class X { int a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z; double A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z; public: X() { a = b = c = d = e = f = g = h = i = j = k = l = m = n = o = p = q = r = s = t = u = v = w = x = y = z = 0; A = B = C = D = E = F = G = H = I = J = K = L = M = N = O = P = Q = R = S = T = U = V = W = X = Y = Z = 0.0; }; } のように、初期化リストだと煩雑すぎる場合だけ代入を使えと えふぇシーに書いてあった
試していないけどおおよそこんな感じで出来ないだろうか。 //共通ヘッダ class A { virtual void hoge(); }; A *CreateA(); void DestroyA(A*&);
//DLL class B : public A { public: virtual void hoge() { MessageBox(0, TEXT("hello"), TEXT(""), MB_OK); } }; A *CreateA() { return new(std::nothrow) B; } void DestroyA(A*& a) { delete a; a = 0; }
//EXE int main() { A *pA = CreateA(); pA->hoge(); DestroyA(pA); };
>724 Effective C++ 第2版の正誤表に関連する記述があるね。 >ttp://aristeia.com/BookErrata/ec++2e-errata_frames.html >For a floating point type FPT, the minimum representable value is >typically -numeric_limits<FPT>::max(), though the Standard does not guarantee this.
で、規格をさらってみますと >ISO/IEC 14882:2003 18.2.1.2-2 > 1 Minimum finite value.181) > 2 For floating types with denormalization, returns the minimum positive normalized value. > 181) Equivalent to CHAR_MIN, SHRT_MIN, FLT_MIN, DBL_MIN, etc. んじゃ、floating types without denormalization はどうやねんと考えると、 18.2.2 から DBL_MIN 等は C 相当。 >ISO/IEC 9899:1999 5.2.4.2.2-10 には FLT_MIN 等は minimum normalized positive floating-point number となって いるので、結局 floating types については、min() は minimum positive normalized value を返す、と考えてよさそう。 結局、numeric_limits<T>::is_integer により整数であるかどうかを判別する必要が あるんじゃないすかね。
ところで有理数型なんてものがあった場合、min() は minimum positive number を 返すべきなんでしょうかね。