2015-09-15 60 views
1

它包含在cpp類源文件中, 它具有以下代碼和我能夠搜索的內容,我沒有看到任何派生類的對象聲明,這就是爲什麼使用這個函數嗎?extern「C」的功能是什麼?

extern "C" 
{ 
    derived_class * create_derv_class_resource(dt1 arg1, dt2 arg2) 
    { 
    return new derived_class(arg1,arg2); 
    } 
} 
+0

你的問題不清楚....你問爲什麼這個函數被定義,如果無處'derived_class'被使用? –

回答

2

我不知道,該怎麼解釋關於「語法」,它沒什麼特別的。

該函數的語義是它創建一個derived_class類型的對象,將給定的參數傳遞給構造函數。

調用此函數而不是調用new直接可能的點:

  1. 它是從C代碼,在那裏你不能創建任何C++對象直接調用。 extern "C"也表明這一點。
  2. 有人想在需要函數指針的地方使用函數。
+0

我對你是否真的可以做到這一點持懷疑態度,但它有效。 [這是一個要點](https://gist.github.com/amullins83/9853816d1609581db169)。 –

0

你問什麼是不明確的,但如果此代碼的工作,很明顯,你有一個對象命名derived_class的地方,和一個,如果它的構造需要dt1dt2參數。

功能create_derv_class_resource()能夠從C稱爲但這似乎不太可能在這裏,因爲C可能不會知道它需要解析原型derived_class類型。