目标 C 中命名空间 C++ 类的前向声明

But*_*aca 2 c++ namespaces class objective-c forward-declaration

是否可以在 Objective C 头文件中对命名空间内的 C++ 类进行前向声明?

在目标 C 中转发声明的 C++ 类:

namespace name
{
    class Clazz
    {

    };
}
Run Code Online (Sandbox Code Playgroud)

我知道如果 C++ 类不在命名空间中,我可以。取自http://www.zedkep.com/blog/index.php?/archives/247-Forward-declaring-C++-classes-in-Objective-C.html

有什么想法吗?
谢谢你们!

jus*_*tin 5

您只需像往常一样声明它,并#ifdef在标头也包含在 C 和/或 ObjC 翻译中时将其包装在 C++检查中:

#ifdef __cplusplus
namespace name {
class Clazz;
} // << name
#endif
Run Code Online (Sandbox Code Playgroud)

由于显而易见的原因,您不能name::Clazz在 C 或 ObjC 翻译中使用,所以这很完美。您要么需要 C++ 翻译中的前向声明,要么不需要对 C 或 ObjC 可见。