我正在尝试学习如何使用 Objective-C 并阅读一些关于将 Objective-C 类包装到 C++ 中的教程。我到了以下几点,一切都编译没有任何错误,但是当我运行程序时,它会导致“分段错误”。
好的,假设我有以下片段,我用它编译:g++ -Wall -pedantic -framework Cocoa -x objective-c++ -o test test.mm
. 我哪里错了?
测试.mm
#include <iostream>
#import "test-osx.m"
struct OpenControllerImpl
{
OpenController* wrapped;
};
class Panel {
OpenControllerImpl* impl;
public:
Panel() :
impl(new OpenControllerImpl) {
impl->wrapped = [[OpenController alloc] init];
}
~Panel() {
[(OpenController*)impl release];
}
void open() {
[(OpenController*)impl doOpen:impl->wrapped];
}
};
int main() {
Panel* openPanel = new Panel();
openPanel->open();
return 0;
}
测试-osx.h
#import <Cocoa/Cocoa.h>
@interface OpenController : NSObject {
}
- (void)doOpen:(id)sender;
@end
测试-osx.m
#import "test-osx.h"
#include <stdio.h>
@implementation OpenController
- (void)doOpen:(id)sender {
printf("here");
}
@end