我试图使用操作符投射到B *但它不起作用。为什么?谢谢。为什么我不能投向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
你究竟在用'operator(B *)()'来做什么?我通常使用'operator B *()',你的语句甚至不会在我的工具链上编译。您显示的错误是我的输出日志中的* last *错误与您的代码;而不是第一个(在你的运算符decl行中,“C++需要所有声明的类型说明符” – WhozCraig
这可能是由于B的定义不完整。你不能创建一个'new' B ...只是猜测。 – StoryTeller
你用什么编译器不会抱怨你的_real_错误? –