2017-03-15 36 views
-3

創建通過FUNC按鍵構造一個Foo對象中不工作的論點只是正常工作在這個例子:傳遞函數爲一類

int func(int a) { return a; } 

struct Foo { 
    Foo(int (*func_ptr)(int)) {}; 
}; 

Foo bar(func); 

但試圖在另一個內部類不創建一個Foo對象:

class ThisIsCrap { 
    Foo doesntWork(func); 
}; 

如何在類內創建一個Foo對象,就像我可以在類之外一樣?在沒有編譯的位上,錯誤是:「無法解析類型'func'」

在此先感謝。

+1

一旦你意識到'MoreCrap :: noFun' *不是函數*,這是相當明顯的。它是*成員*功能。與函數不同,它不能被調用:'MoreCrap :: noFun(10)'沒有任何意義。成員函數是不同的構造,需要使用更復雜的一組數據,即對象實例和參數。 –

+0

好的,我可以看到,但是ThisIsCrap :: doesntWork呢? –

+0

那個甚至沒有語法意義。這就像'void f(10,int);'。 –

回答

0

1,000感謝Kerrek SB。

class ThisWorks { 
    Foo* working; 
    ThisWorks() { 
     working = new Foo(func); 
    } 
} 
+0

這是錯誤的,因爲它得到。你爲什麼要引入一個指針?你不需要指針,但現在你將不得不照顧它**永遠**。 –

+0

Oy ..不知道該怎麼做:/ –