0

我有一个要添加到我的 iphone 项目中的 C++ 库。

在一个头文件中我声明

@interface a
{
   cppvirtualclass V;
}

对于具有 Release 设置的 iPhone 设备,这编译得很好。但是,无论有没有调试信息,它都拒绝为模拟器编译。

它给出了错误

error: type 'V' has virtual member functions.

有没有办法解决这个问题,还是我必须只定义具体的 C++ 类?

4

2 回答 2

2

默认情况下,Objective C 在创建 Objective C 对象时不会在 C++ 实例变量上运行构造函数。这意味着(我认为)C++ 对象的 vtable 将无法正确初始化。

尝试使您的实例变量成为指针并在 init 方法中分配它(并在 dealloc/finalize 中销毁它)。

或者

尝试在目标代码生成设置中设置“在 Ovjective-C 中调用 C++ 默认 Ctors/Dtors”。

(GCC_OBJC_CALL_CXX_CDTORS,-fobjc-call-cxx-cdtors)

于 2010-04-09T13:32:11.793 回答
0

此外,Objective-C++ 不再是 iPhone 开发允许的语言(根据 4.0)。您可以使用 Objective-C、C 和 C++,但不能使用 Objective-C++。

于 2010-05-01T20:50:42.187 回答