我正在尝试使用运算符转换为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
你的代码有几个问题.首先,括号周围B*是错误的,只需:
operator B*() {...}
Run Code Online (Sandbox Code Playgroud)
它应该是一个const成员函数.
此外,您正在尝试B在B定义之前创建类型的新实例.你不能用不完整的类型做到这一点,只需B在之前定义A.
删除这些错误后,您的代码将按预期工作.
| 归档时间: |
|
| 查看次数: |
140 次 |
| 最近记录: |