0

C++の単純型の周りにいくつかの基本的なラッパークラスを作成したいと思います。本来のように基本型から継承することはできないので、私はラッパークラスを使用しています。問題は、そのキャストは完全に有効なので、そのタイプに直接キャストできるようにしたいということです。コンパイラーはあなたを許さず、パフォーマンスを損なうキャストメソッドを実行せずにそれが大丈夫だと言う方法を見つけることができません。これを行う方法はありますか?

これが私が変換コンストラクターのために持っているものです:

class Integer32
{ 
    public: 
    Integer32(int value) { this->Value = value; } 
    int Value; 
};

コンパイラはそれをスキップしてintから直接割り当てることを知っていますか?これはかなり重要なので、これをテストして確認するにはどうすればよいですか...

4

1 に答える 1

3

explicit基本型からラッパーへの変換とキャストを可能にする非コンストラクターを提供します。非explicit変換演算子を提供して、ラッパーから基本クラスへの変換キャストを可能にします。

class my_wrapper {
    my_wrapper(int); // casting from int
    operator int();  // casting to int
};

explicit明示的なキャストは許可しますが、暗黙的な変換は許可しないようにします)

于 2013-01-04T03:04:10.397 に答える