【发布时间】:2010-05-06 07:47:37
【问题描述】:
我想在 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'
【问题讨论】:
-
确保您没有不小心将其重命名为以
.m结尾而不是.mm。否则 C++ 头文件不在头文件搜索路径中(当然你不能使用 C++)。 -
我仔细检查了它,扩展名是.mm。不过要清楚一点,该接口位于头文件中。这有什么不同吗?
-
如果标头包含在一些普通的 Objective-C (
.m) 文件中,您最终会遇到同样的问题。参见例如here 替代方案。 -
不透明的指针工作得很好。谢谢女朋友。如果您要将您的答案复制到回复中,那么我会给您打勾。再次感谢。
-
添加它以供将来参考,但给 KennyTM 打勾 - 他解决了最初发布的问题。我只修复了后续。
标签: c++ stack objective-c++