C++相談室 part41
■ このスレッドは過去ログ倉庫に格納されています
0610デフォルトの名無しさん
2005/07/28(木) 17:45:43struct B {
template <class T> void f(const T& t) { cout << "T" << endl; }
virtual void f(const B& b) { cout << "B" << endl; }
};
struct D : public B {};
ここで、
B b; D d1, d2;
とすると、
d1.f(0); // (int)0 -> templateの方が選択される
d1.f(b); // B -> f(B)の方が選択される
d1.f(d2); // D -> templateの方が選択される
となります。ここで、
d1.f(static_cast<B>(d2)); // B -> f(B)の方が選択される
のように明示的にキャストせず、派生クラスの場合には
d1.f(d2);だけでf(B)が選択されるようにするには
どうすればいいですか?
■ このスレッドは過去ログ倉庫に格納されています