Tôi đang cố gắng kết hợp C++ và Objective-C, tôi đã thực hiện hầu hết các cách nhưng muốn có một lớp giao diện duy nhất giữa mã Objective-C và C++. Vì vậy, tôi muốn có một đối tượng C++ liên tục trong giao diện ViewController.Thêm đối tượng C++ vào Objective-C Class
này thất bại bởi cấm tuyên bố 'myCppFile' không có loại:
#import <UIKit/UIKit.h>
#import "GLView.h"
#import "myCppFile.h"
@interface GLViewController : UIViewController <GLViewDelegate>
{
myCppFile cppobject;
}
@end
Tuy nhiên điều này chỉ hoạt động tốt trong các tập tin thực hiện .mm (Nó không làm việc vì tôi muốn cppobject để tồn tại giữa các cuộc gọi)
#import "myCppFile.h"
@implementation GLViewController
- (void)drawView:(UIView *)theView
{
myCppFile cppobject;
cppobject.draw();
}
Cảm ơn, các đề xuất khác dường như không hoạt động và tôi đã kết thúc tuyên bố đối tượng của mình là "id *", sau đó truyền nó đến đúng loại ở mọi nơi tôi muốn sử dụng. Điều này có vẻ giống như ý tưởng, nhưng sạch hơn nhiều vì tôi không phải làm tất cả các phôi phụ. – Winder
Tôi luôn thích các con trỏ đục hơn các phôi - nó có thể là một công việc nhiều hơn một chút, nhưng bạn có được sự an toàn kiểu đầy đủ. –
Tôi đã chơi với con trỏ mờ đục cho điều này, mà tôi sử dụng rộng rãi cho C/C++ gói, nhưng cho đến nay tôi đã không nhìn thấy lợi ích thực sự. Bạn có thể so sánh phong cách này (cùng với một số mã cho thấy cách "đục" được phân bổ và phát hành) theo phong cách void * ở đây: http://robnapier.net/blog/wrapping-c-objc-20 –