【发布时间】:2012-12-03 20:56:12
【问题描述】:
我有一个 .cpp/.hpp 文件组合 -> .hpp 文件有 #include ..
我还有一个 .mm/.h 文件组合 -> 如果我将 .hpp 文件包含在我的 .mm Objective C++ 文件中,则没有问题。但是,如果我尝试在 .h(Objective C 头文件)文件中包含 .hpp 文件,我会收到预处理器问题“找不到 iostream”。
除了做一些时髦的事情,比如在我的 Objective C .h 文件中有一个 void* 然后将其转换为包含在 .mm 中的类型或将每个 C++ 类型包装在一个 Objective C++ 类型中之外,还有什么办法可以解决这个问题?
我的问题与托尼的问题基本相同(但没有人回答他的问题):
https://stackoverflow.com/questions/10163322/how-to-include-c-header-file-in-objective-c-header-file
【问题讨论】:
-
您必须避免在您的头文件中包含任何 C++ 包含/代码,以便您的文件包含在其他非 Objective-C++ 类中。这意味着您可能需要使用 void* 来存储成员变量。
-
您在问语言A的编译器是否有有效的方法来编译语言B。通常没有。 Objective-C 可以使用 C 代码。 Objective-C++ 代码可以使用 C++ 代码。但是 C 和 C++ 是不同的语言,所以要严格区分它们。
-
@LokiAstari - 实际上,这不是我要问的 -> 我只使用了 Objective C++ 和 C++。我的 C++ 包含 iostream(例如 C++),而我的 Objective C++ 头文件不能包含我的 C++ 头文件,因为该头文件包含 iostream。
-
@Joe - 感谢您的回答;如果您将其作为答案,我会将其标记为已接受。但是,我绝对希望有一种更好的方法来使用 void* 并在任何地方进行强制转换...:/
-
@fatfreddyscat 我有更好的东西.. answer 使用不透明的指针。
标签: c++ ios import include objective-c++