为什么我不能投B *?

时间:2012-12-29 02:24:04

标签: c++

我正在尝试使用运算符转换为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

1 个答案:

答案 0 :(得分:8)

您的代码存在一些问题。首先,B*周围的括号是错误的,只需:

operator B*() {...}

它可能应该是const成员函数。

此外,您尝试在定义B之前创建类型B的新实例。您无法使用不完整类型执行此操作,只需在B之前定义A

删除这些错误后,您的代码会按预期运行。