Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.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++;类是Objc类的委托吗? 因为我需要继承C++中声明的一些处理程序作为超类,所以我必须声明我的类为 C++ >代码>类。但我也想让它成为两个Objective-C类的代表。在我的C++类中使用委托模式是不可避免的,但是我不知道如何使C++类成为Objtovi-C类的委托。_C++_Objective C - Fatal编程技术网

是否可以制作一个C++;类是Objc类的委托吗? 因为我需要继承C++中声明的一些处理程序作为超类,所以我必须声明我的类为 C++ >代码>类。但我也想让它成为两个Objective-C类的代表。在我的C++类中使用委托模式是不可避免的,但是我不知道如何使C++类成为Objtovi-C类的委托。

是否可以制作一个C++;类是Objc类的委托吗? 因为我需要继承C++中声明的一些处理程序作为超类,所以我必须声明我的类为 C++ >代码>类。但我也想让它成为两个Objective-C类的代表。在我的C++类中使用委托模式是不可避免的,但是我不知道如何使C++类成为Objtovi-C类的委托。,c++,objective-c,C++,Objective C,可能吗?还是有一种间接的方法来做?你需要知道委托是Objtovi.C中的返回数据,所以你用C++语言把类创建为超级类,它将返回数据。所以让我们来做。 首先,使用C++语言,表示C++类,然后添加Objtovi-C类。因此C++类和Objc类混合在一个XXX.H/XXX.mm中。p> 其次,您还需要委托,您只在其他objc类中使用objc类实现 查看它的测试代码 TestViewController.h #import <UIKit/UIKit.h> class testC {

可能吗?还是有一种间接的方法来做?

你需要知道委托是Objtovi.C中的返回数据,所以你用C++语言把类创建为超级类,它将返回数据。所以让我们来做。 首先,使用C++语言,表示C++类,然后添加Objtovi-C类。因此C++类和Objc类混合在一个XXX.H/XXX.mm中。p> 其次,您还需要委托,您只在其他objc类中使用objc类实现

查看它的测试代码

TestViewController.h

#import <UIKit/UIKit.h>
class testC
{
   public:
   static int useCMethod();
};

@protocol helloCDelegate<NSObject>
@optional
- (void)testDelegateTransformDataInTest:(int)testNum;
@end
@interface TestViewController : UIViewController
@property (nonatomic,weak) id<helloCDelegate> delegate;
@end

TestViewController.mm -- section operate implement code

int testC::useCMethod(){
return 3;
}

// you can use C++ method and C++ object in sample method.
// also it use delegate in here,so you can implement in other view controller.
- (void)tapBackTranformReturnData
{
   int num = testC::useCMethod();
   [self.delegate testDelegateTransformDataInTest:num];
 }
TestViewController.h
#进口
类testC
{
公众:
静态int useCMethod();
};
@协议代理
@可选的
-(void)testDelegateTransformDataInTest:(int)testNum;
@结束
@接口TestViewController:UIViewController
@属性(非原子,弱)id委托;
@结束
TestViewController.mm--操作工具代码部分
int testC::useCMethod(){
返回3;
}
//可以在采样方法中使用C++方法和C++对象。
//此外,它在这里使用委托,所以您可以在其他视图控制器中实现。
-(无效)点击BackTransformReturnData
{
int num=testC::useCMethod();
[self.delegate testDelegateTransformDataInTest:num];
}

哦,最重要的一点是,必须将<代码> xxx .m>代码>文件改为<代码> xxx .mm < /C> >,这意味着Objy++可以使用C++语言和Objul-C.<


你需要这个功能吗?我希望帮助你。

你需要知道委托是Objtovi.C中的返回数据,所以你用C++语言创建类作为超级类,它将返回数据。所以让我们来做。 首先,使用C++语言,表示C++类,然后添加Objtovi-C类。因此C++类和Objc类混合在一个XXX.H/XXX.mm中。p> 其次,您还需要委托,您只在其他objc类中使用objc类实现

查看它的测试代码

TestViewController.h

#import <UIKit/UIKit.h>
class testC
{
   public:
   static int useCMethod();
};

@protocol helloCDelegate<NSObject>
@optional
- (void)testDelegateTransformDataInTest:(int)testNum;
@end
@interface TestViewController : UIViewController
@property (nonatomic,weak) id<helloCDelegate> delegate;
@end

TestViewController.mm -- section operate implement code

int testC::useCMethod(){
return 3;
}

// you can use C++ method and C++ object in sample method.
// also it use delegate in here,so you can implement in other view controller.
- (void)tapBackTranformReturnData
{
   int num = testC::useCMethod();
   [self.delegate testDelegateTransformDataInTest:num];
 }
TestViewController.h
#进口
类testC
{
公众:
静态int useCMethod();
};
@协议代理
@可选的
-(void)testDelegateTransformDataInTest:(int)testNum;
@结束
@接口TestViewController:UIViewController
@属性(非原子,弱)id委托;
@结束
TestViewController.mm--操作工具代码部分
int testC::useCMethod(){
返回3;
}
//可以在采样方法中使用C++方法和C++对象。
//此外,它在这里使用委托,所以您可以在其他视图控制器中实现。
-(无效)点击BackTransformReturnData
{
int num=testC::useCMethod();
[self.delegate testDelegateTransformDataInTest:num];
}

哦,最重要的一点是,必须将<代码> xxx .m>代码>文件改为<代码> xxx .mm < /C> >,这意味着Objy++可以使用C++语言和Objul-C.<


你需要这个功能吗?我希望能帮助你。

这里有一个快速而肮脏的例子

需要委托给C++的Objective-C类的接口和实现:

@interface MyClassOC : NSObject
@property id<MyDelegateProtocol> myDelegate;
-(void)doStuff;
@end

@implementation MyClassOC
-(void)doStuff {
    if (self.myDelegate) {
        [self.myDelegate performOperation];
    }
}
@end
作为委托使用的C++类:

class MyDelegateCPP {
public:
    void performOperation();
};

void MyDelegateCPP::performOperation() {
    cout << "C++ delegate at work!\n";
}
这可用于以下方面:

MyDelegateOCPP * delegate = [[MyDelegateOCPP alloc] init];
MyClassOC * classOC = [[MyClassOC alloc] init];
classOC.myDelegate = delegate;
[classOC doStuff];

同样,这只是一个过于简单的草图,但希望它能给你一个想法。

这里是一个快速而肮脏的例子

需要委托给C++的Objective-C类的接口和实现:

@interface MyClassOC : NSObject
@property id<MyDelegateProtocol> myDelegate;
-(void)doStuff;
@end

@implementation MyClassOC
-(void)doStuff {
    if (self.myDelegate) {
        [self.myDelegate performOperation];
    }
}
@end
作为委托使用的C++类:

class MyDelegateCPP {
public:
    void performOperation();
};

void MyDelegateCPP::performOperation() {
    cout << "C++ delegate at work!\n";
}
这可用于以下方面:

MyDelegateOCPP * delegate = [[MyDelegateOCPP alloc] init];
MyClassOC * classOC = [[MyClassOC alloc] init];
classOC.myDelegate = delegate;
[classOC doStuff];

再次,这只是一个过于简化的草图,但希望它给你一个想法。

让C++类成为Objtovi-C类的委托,需要创建一个桥对象(ObjuleC类),当委托的方法被触发时,它是ObjtoVc对象和Clice C++方法的委托。为了使C++类成为Objtovi-C类的委托,需要创建一个桥对象(ObjuleC类),它是ObjuleC对象的委托,在委托委托方法被触发时调用C++方法。