2017-06-16 66 views
-2

這行代碼,我需要翻譯從C++到Objective-C 這一行,但我真的不明白這行如何翻譯從C++到Objective-C

IntVar* MakeIntVar(int64 vmin, int64 vmax, const std::string& name); 

這似乎是我沒有返回值的函數?

IntVar是由方式一類

class IntVar; 
+6

但'IntVar *'是返回值。請正確學習C++,不要在各種語言之間進行翻譯,即使原始語言不會以良好的代碼結束。 – Rakete1111

+0

感謝您的快速答案 - 現在我瞭解更多 - 通常我不需要C++,但在我的情況下,我需要一個橋接頭爲這 – Dschella

+0

@Dschella _「...沒有返回值?」_返回值顯然是'IntVar *'??? –

回答

1

目的-C是C的一個擴展你應該用於調用目標C的方法和C函數。

對於方法,您在@interface定義它們,通常寫在.h文件,並在@class,寫在一個.m文件執行。

您可能不會編寫很多C函數,但您可以使用它們:例如NSLog(),sin(),。 C函數是獨立的,不是類C中的類的一部分,但您通常在.h中定義(或原型),並在.c中執行。

如果上面的C部分,是陌生的,然後在你的Objective-C代碼寫入到NSLog(或sin等)呼叫,然後查找它的定義(在Xcode選擇NSLog,右/控制鼠標,選擇「跳轉到「)。你會看到一條與你問題中的線很相似的線。

你有什麼是函數的定義(MakeIntVar),它接受三個參數並返回一個值。函數的第三個參數具有C++類型,並且是C++參考參數(&位),您需要了解C++才能知道如何調用此函數。

從您的問題/評論中不清楚您是將C++轉換爲Objective-C還是嘗試從Objective-C調用C++。如果後者您可能需要在Objective-C++(寫在.mm文件中)中編寫一些橋接代碼。您將需要學習如何編寫Objective-C++並從Objective-C中調用它。

HTH