从目标C类调用目标C++方法 是否可以调用目标C类中的Objy-C++类和方法?
我们已经用Objective C代码编写了一个项目。现在我们有一个C++类要集成,所以我认为只改变一个类到目标C++,它与本地C++类交互,其他的将保持在目标C中。 可能吗?谁能帮我找到更好的解决方案从目标C类调用目标C++方法 是否可以调用目标C类中的Objy-C++类和方法?,c++,ios,objective-c,objective-c++,C++,Ios,Objective C,Objective C++,我们已经用Objective C代码编写了一个项目。现在我们有一个C++类要集成,所以我认为只改变一个类到目标C++,它与本地C++类交互,其他的将保持在目标C中。 可能吗?谁能帮我找到更好的解决方案 谢谢。是的,你可以这样做。只要类的接口是C-ish,Objective-C就不关心实现是Objective-C还是Objective-C++。是的,您可以这样做。只要类的接口是C-ish,Objective-C就不在乎实现是Objective-C还是Objective-C++。是。这是可能的。只需
谢谢。是的,你可以这样做。只要类的接口是C-ish,Objective-C就不关心实现是Objective-C还是Objective-C++。是的,您可以这样做。只要类的接口是C-ish,Objective-C就不在乎实现是Objective-C还是Objective-C++。是。这是可能的。只需在扩展中隐藏C++字段即可。例如:
//.h-file
@interface IntVector: NSObject
- (int) valueAtIndex:(NSUInteger) idx;
- (NSUInteger) size;
- (void) insertValue:(int) val atIndex:(NSUInteger) idx;
@end
//.mm-file
#include <vector>
using namespace std;
@interface IntVector()
{
vector<int> _vals;
}
@end
@implementation IntVector
- (int) valueAtIndex:(NSUInteger)idx
{
return _vals[idx];
}
- (NSUInteger) size
{
return _vals.size();
}
- (void) insertValue:(int) val atIndex:(NSUInteger) idx
{
_vals.indest(_vals.begin()+idx, val);
}
@end
您可以将该类与任何其他objective-c代码一起使用。是。这是可能的。只需在扩展中隐藏C++字段即可。例如:
//.h-file
@interface IntVector: NSObject
- (int) valueAtIndex:(NSUInteger) idx;
- (NSUInteger) size;
- (void) insertValue:(int) val atIndex:(NSUInteger) idx;
@end
//.mm-file
#include <vector>
using namespace std;
@interface IntVector()
{
vector<int> _vals;
}
@end
@implementation IntVector
- (int) valueAtIndex:(NSUInteger)idx
{
return _vals[idx];
}
- (NSUInteger) size
{
return _vals.size();
}
- (void) insertValue:(int) val atIndex:(NSUInteger) idx
{
_vals.indest(_vals.begin()+idx, val);
}
@end
你可以使用任何其他Objul-C代码。
< P>是的,只要你限制C++类型的使用到实现文件,你就可以从普通的目标C调用所有的Objc++类。就像包装任何在“ExcN C”中导入的松散函数,就像你在混合C++和直C时所做的那样,但是如果你可以假设XXCORE的一个中等版本,不需要支持32位Mac,那么你可以很容易地用类扩展AKA类继续做所有这些。 如果您想了解有关该主题的一些提示和技巧,我是不久前NSBrief一集的嘉宾,在该集中,我详细介绍了使用ObjC++的几乎所有方面:你也可以找到类似的问题的答案:
< P>是的,只要你限制C++类型的使用到实现文件,你就可以从普通的目标C调用所有的Objc++类,有几个窍门,比如包装你在“外部C”中导入的任何松散函数,就像你在混合C++和C时所做的那样。但是,如果您可以假设Xcode是一个较新的版本,并且不需要支持32位MacOS,那么您可以通过类扩展(又称类延续)轻松地完成所有这些 如果您想了解有关该主题的一些提示和技巧,我是不久前NSBrief一集的嘉宾,在该集中,我详细介绍了使用ObjC++的几乎所有方面: 您也可以找到类似问题的答案: