2015-02-05 33 views
2

爲什麼下面的程序在編譯失敗。C++使用匿名對象調用函數結果編譯器錯誤

#include <iostream> 
using namespace std; 
class Test 
{ 
    public: 
    void fun() 
    { 
     cout<<"fun() in Test\n"; 
    } 
}; 
int main() { 
    new Test()->fun(); 
    // your code goes here 
    return 0; 
} 

訪問此鏈接:http://ideone.com/qtCufW

它可以調用使用匿名對象的成員方法在Java中& C#,但爲什麼在C++中不允許? 請幫幫我。

+1

什麼是編譯器錯誤? – Vinzenz 2015-02-05 16:42:15

回答

10

要解決的語法錯誤,parenthesise新表達

(new Test())->fun(); 

由於new->運營商的優先級意味着你被解析爲

new (Test()->fun()); 

其形成不良。

要修復內存泄漏,請停止使用new。你不再編寫Java或C#。

Test().fun();