我正在尝试使用运算符转换为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
答案 0 :(得分:8)
您的代码存在一些问题。首先,B*
周围的括号是错误的,只需:
operator B*() {...}
它可能应该是const
成员函数。
此外,您尝试在定义B
之前创建类型B
的新实例。您无法使用不完整类型执行此操作,只需在B
之前定义A
。
删除这些错误后,您的代码会按预期运行。