我試圖使用操作符投射到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_錯誤? –