Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从目标C类调用目标C++方法 是否可以调用目标C类中的Objy-C++类和方法?_C++_Ios_Objective C_Objective C++ - Fatal编程技术网

从目标C类调用目标C++方法 是否可以调用目标C类中的Objy-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++。是。这是可能的。只需

我们已经用Objective C代码编写了一个项目。现在我们有一个C++类要集成,所以我认为只改变一个类到目标C++,它与本地C++类交互,其他的将保持在目标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++的几乎所有方面:

您也可以找到类似问题的答案: