我只是在学习Objective C(和objective-c++),并且我有一个Objective-C++ 类,它具有以下构造函数。
void InputManager::_init (int inputAreaX, int inputAreaY, int inputAreaWidth, int inputAreaHeight)
如何从目标 C 调用它?
我只是在学习Objective C(和objective-c++),并且我有一个Objective-C++ 类,它具有以下构造函数。
void InputManager::_init (int inputAreaX, int inputAreaY, int inputAreaWidth, int inputAreaHeight)
如何从目标 C 调用它?
这似乎是一种纯 C++ 方法,因此它的工作方式与普通 C++ 完全相同(即使在 Objective-C++ 文件中)。例如,您可能在堆栈上定义了一个变量:
InputManager mgr; // or, include constructor arguments if the class can't be default-constructed
mgr._init(x, y, w, h); // this assumes 4 variables exist with these names; use whatever parameter values you want
不过这个名字_init
有点奇怪;您的意思是 this 是该类的构造函数吗?如果是这样,InputManager::InputManager(int x, int y, int w, int h)
可能应该改为定义。
如果您实际上希望此类仅是 Objective-C,则语法和行为是不同的。
你有两个选择:
选项1。
将其翻译成仅限 Objective-C 的代码。我不太擅长 C++,但这可能是 .h 中的样子:
-(id)initWithAreaX: (int) inputAreaX AreaY: (int) inputAreaY AreaWidth: (int) inputAreaWidth AreaHeight: (int) inputAreaHeight;
因为它看起来像是一个构造方法,所以在实现中它可能看起来像这样:
-(id)initWithAreaX: (int) inputAreaX AreaY: (int) inputAreaY AreaWidth: (int) inputAreaWidth AreaHeight: (int) inputAreaHeight {
self = [super init];
if(self) {
//Custom Initialization Code Here
_inputAreaX = inputAreaX;
_inputAreaY = inputAreaY;
_inputAreaWidth = inputAreaWidth;
_inputAreaHeight = inputAreaHeight;
}
return self;
}
你可以这样称呼它:
InputManager *object = [[InputManager alloc] initWithAreaX: 20 AreaY: 20 AreaWidth: 25 AreaHeight: 25];
选项 2。
Objective-C++ 的全部目的是允许开发人员集成 C++ 和 Objective-C 代码。你想知道如何在 Objective-C 中调用 Objective-C++ 方法,但 Objective-C++ 的全部目的就是将两者结合起来,所以没有必要去寻找漏洞调用 Objective-C++ 中的方法否则完全是Objective-C的文件。因此,第二个选项是在扩展名为“.mm”的 Objective-C++ 文件中创建要调用 Objective-C++ 方法的文件。
希望这可以帮助!