3

演算子を使用して B* にキャストしようとしていますが、うまくいきません。なんで?ありがとう。

struct B;

struct A {
    A() = default;

    operator (B *)() {
        return new B();
    }
};

struct B { B() = default; };

int main() {

    A a;

    B *b = a;

}

エラーが発生します:cannot convert 'A' to 'B*' in initialization

4

1 に答える 1

8

コードにはいくつか問題があります。まず、括弧B*が間違っています。次のようにしてください。

operator B*() {...}

おそらくconstメンバー関数である必要があります。

さらに、が定義されるB前に型の新しいインスタンスを作成しようとしています。不完全な typeBでそれを行うことはできません。 beforeを定義するだけです。BA

これらのエラーが削除されると、コードは期待どおりに機能します。

于 2012-12-29T02:25:41.633 に答える