2016-06-29 14 views
-1

少数の種類の型キャスト演算子をオーバーロードしました。今私は、他のすべてのタイプキャストに対して特定の関数を呼びたいと思います。どうしたらいいですか?C++で既定の型キャスト演算子を定義する方法

+2

テンプレート CoryKramer

+0

質問を閉じる理由を知りましたか? – neckTwi

+0

はい、タイプミス( 'テンプレート'は 'テンプレート'だったはずです)が原因です。また、質問への回答を編集しないでください –

答えて

2

明らかに厄介な問題です。

  1. typenameoperator T()にありません。

    template <T> 
    operator T(); 
    

    template <typename T> 
    operator T(); 
    
  2. アクセスの問題である必要があります。

    class Fooからstruct Fooに変更するか、または機能をpublicに変更してください。

  3. クラス定義の末尾に;がありません。

主な問題は、メンバー関数テンプレートを特化できないことです。しかし、同じ効果でそれらをオーバーロードすることができます。

struct Foo { 
    template <typename T> 
    operator T(); 

    operator int(); 

    operator char(); 
}; 
関連する問題