Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/159.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++; 我在ObjtoviC.中调用C++中的一些函数有问题。 我有以下代码。在“objCFuncA”中,如何调用“funcBCallback(std::string inText)”函数?。谢谢_C++_Ios_Objective C_Objective C++ - Fatal编程技术网

从目标C调用C++; 我在ObjtoviC.中调用C++中的一些函数有问题。 我有以下代码。在“objCFuncA”中,如何调用“funcBCallback(std::string inText)”函数?。谢谢

从目标C调用C++; 我在ObjtoviC.中调用C++中的一些函数有问题。 我有以下代码。在“objCFuncA”中,如何调用“funcBCallback(std::string inText)”函数?。谢谢,c++,ios,objective-c,objective-c++,C++,Ios,Objective C,Objective C++,SampleCallback.h class SampleCallback { public: static void funcA(); static void funcBCallback(std::string inText); }; @interface SampleCallback_iOS : NSObject + (SampleCallback_iOS*)shared; - (void)objCFuncA:(const char*)inString; @end

SampleCallback.h

class SampleCallback
{
public:
    static void funcA();
    static void funcBCallback(std::string inText);
};
@interface SampleCallback_iOS : NSObject

+ (SampleCallback_iOS*)shared;

- (void)objCFuncA:(const char*)inString;

@end
SampleCallback.mm

void SampleCallback::funcA()
{
    [[SampleCallback_iOS shared] objCFuncA:"My text from C++"];
}

void SampleCallback::funcBCallback(std::string inText)
{
    NSLog(@"SUCCES GET RETURN");
}
@implementation SampleCallback_iOS

static SampleCallback_iOS* instance = nil;

+ (SampleCallback_iOS*)shared
{
    @synchronized(self) {
        if (instance == nil) {
            instance = [[self alloc] init];
        }
    }
    return instance;
}

- (void)objCFuncA:(const char*)inString
{
    NSLog(@"Text from C++: %s", inString);

    // How to call SampleCallback::funcBCallback?
}
@end
SampleCallback\u iOS.h

class SampleCallback
{
public:
    static void funcA();
    static void funcBCallback(std::string inText);
};
@interface SampleCallback_iOS : NSObject

+ (SampleCallback_iOS*)shared;

- (void)objCFuncA:(const char*)inString;

@end
SampleCallback\u iOS.m

void SampleCallback::funcA()
{
    [[SampleCallback_iOS shared] objCFuncA:"My text from C++"];
}

void SampleCallback::funcBCallback(std::string inText)
{
    NSLog(@"SUCCES GET RETURN");
}
@implementation SampleCallback_iOS

static SampleCallback_iOS* instance = nil;

+ (SampleCallback_iOS*)shared
{
    @synchronized(self) {
        if (instance == nil) {
            instance = [[self alloc] init];
        }
    }
    return instance;
}

- (void)objCFuncA:(const char*)inString
{
    NSLog(@"Text from C++: %s", inString);

    // How to call SampleCallback::funcBCallback?
}
@end

<> P>不可能从普通ObjuleC调用C++函数(就像你不能从C中调用C++)。
不过,您可以将Objective-C文件转换为Objective-C++。为此,只需将文件重命名为使用扩展名
.mm
而不是
.m

,您必须将SampleCallback_iOS.m重命名为.mm,然后使用
#include“SampleCallback.h”
,这与
SampleCallback::funcBCallback(“您的文本”)一样简单