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之前创建类型的新实例。B你不能用不完整的类型来做到这一点,只需定义Bbefore A

删除这些错误后,您的代码将按预期工作。

于 2012-12-29T02:25:41.633 回答