为什么我不能投B*?

Me *_*d I 3 c++

我正在尝试使用运算符转换为B*,但它不起作用.为什么?谢谢.

struct B;

struct A {
    A() = default;

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

struct B { B() = default; };

int main() {

    A a;

    B *b = a;

}
Run Code Online (Sandbox Code Playgroud)

我收到错误: cannot convert 'A' to 'B*' in initialization

K-b*_*llo 8

你的代码有几个问题.首先,括号周围B*是错误的,只需:

operator B*() {...}
Run Code Online (Sandbox Code Playgroud)

它应该是一个const成员函数.

此外,您正在尝试BB定义之前创建类型的新实例.你不能用不完整的类型做到这一点,只需B在之前定义A.

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