1

我想在 Objective-C 中使用 C++ 堆栈类型,但我遇到了一些问题。这是我想做的一个示例:

#import <stack>
#import <UIKit/UIKit.h>

@interface A : NSObject {
    stack<SEL> selectorStack;
}

@end

不幸的是,这不能编译。在弄乱了代码一段时间并尝试了不同的事情之后,我似乎找不到实现这一目标的方法。有人可以告诉我在 Objective-C 对象中使用 C++ 堆栈的最佳方法,或者它是否可能?

谢谢。

更新:

好吧,KennyTM 的答案适用于我的示例文件,但由于某种原因,当我尝试重命名该类时它停止工作。这是我现在拥有的代码:

#import <stack>
#import <UIKit/UIKit.h>

@interface MenuLayer : NSObject {
    std::stack<SEL> selectorStack;
}

@end

编译器吐出以下错误:

stack: No such file or directory
expected specifier-qualifier-list before 'std'
4

2 回答 2

2

你有没有尝试过

@interface A : NSObject {
    std::stack<SEL> selectorStack;
}
于 2010-05-06T07:50:27.210 回答
1

For the second problem make sure you haven't accidentally renamed the file ending .m instead of .mm. Otherwise the C++ headers aren't in the header search paths (and you can't use C++ of course).

Also, if the header is included in some plain Objective-C file (.m) you end up with the same problem. You could avoid this e.g. by using opaque pointers.

于 2010-05-07T12:54:50.087 回答