1

問題のコード:

struct PCArea {
        PCArea(
            int minxx = 0, 
            int minyy = 0, 
            int maxxx = 0, 
            int maxyy = 0
        ) {}
    };

struct NDCVolume {
    NDCVolume() {}

    operator PCArea() const;
};

// how does this operator work? how to use/read it?
NDCVolume ::operator PCArea() const {

    return PCArea(iminx, iminy, imaxx, imaxy); 
}

冗長なコードはスニペットから削除されました。Visual Studio > Find All References を使用しましたが、使用されている場所を見つけることができません。私には、指定された戻り値のないメンバー メソッドのように見えます。

下とどう違うの?

PCArea NDCVolume::PCArea() const;
4

2 に答える 2

1

変換演算子です。

それNDCVolume NDCVolume::PCArea() const;が単なる関数であり、暗黙的に使用されない場合

変換演算子が定義されている場合は、次のように書くことができます

NDCVolume vol;
PCArea area = vol; //implicit conversion

2 番目のケース (通常の関数を使用) では、明示的にする必要があります。

NDCVolume vol;
PCArea area  = vol.PCArea(); //explicit conversion
PCArea area2 = vol; //error, if no conversion operator is defined
于 2012-07-20T08:35:03.063 に答える
0

PCArea 型への暗黙的な変換演算子。

PCArea NDCVolume::PCArea() const;

is only function であり、変換演算子ではありません。自動的に使用することはできません。

于 2012-07-20T08:34:45.927 に答える