2011-07-27 32 views
5

私は2つのクラスがあります。typecasting演算子が継承されたクラスで動作しないのはなぜですか?

struct B {}; 
struct D { 
    operator B&(); 
}; 

私が行います。

b = d; // B b; ... D d; 

結果はD::operator B&()が(Demo)が呼び出された期待通りです。 Dに変更された場合

struct D : B { 
    operator B&(); 
}; 

は次にD::operator B&()が呼び出されない(Demo)。 B::B(const B&)Dでより良い候補者を見つけましたか?D::operator B&()

答えて

7

Bから派生した場合、DからBへの暗黙の自動変換があります。これは、ユーザー定義の変換演算子よりも高い優先順位を持ちます。

関連する問題