gpt4 book ai didi

c++ - 在 Objective-C 代码中使用带有 C++ 实例变量的 Objective-C++ 类

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:48:09 33 4
gpt4 key购买 nike

我正在编写一个 Objective-C++ 类接口(interface),它必须可以从 Objective-C 和 Objective-C++ 中使用。问题是,因为它必须可以从 Objective-C 使用,所以我不能简单地使用 C++ 类型。我想用指针来做,我想到了这个:

@interface SXDiff : NSObject {
@private
#ifdef __cplusplus
dtl::Diff<std::string, std::vector<std::string> > *_diff;
#else
void *_diff;
#endif
}

...

@end

这样做会不会出现什么问题?有更好的方法吗?


请注意,使用指针只是为了让 Objective-C 和 Objective-C++ 中的 ivar 大小相同。 ivar 只能在 SXDiff 的类实现中使用(它是 @private)。实现是用 Objective-C++ 编写的。

最佳答案

使用 Apple LLVM 2.0+ 版尝试将所有 C++ 代码从 header 移动到类扩展中。

//SXDiff.h
@interface SXDiff : NSObject {
}

...

@end


//SXDiff.mm
#include "dtl/dtl.hpp"

@interface SXDiff()
{
dtl::Diff<std::string, std::vector<std::string> > *_diff;
}
@end

@implementation SXDiff

...

@end

关于c++ - 在 Objective-C 代码中使用带有 C++ 实例变量的 Objective-C++ 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7808394/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com