Ios 从C+继承NSObject+;班 我对C++类很有感情,但我真的希望它进入一个TabLVIEW。 有没有方法从标准C++类中继承NSbObjor?< /P>

Ios 从C+继承NSObject+;班 我对C++类很有感情,但我真的希望它进入一个TabLVIEW。 有没有方法从标准C++类中继承NSbObjor?< /P>,ios,inheritance,objective-c++,nsobject,Ios,Inheritance,Objective C++,Nsobject,这就是我试图做的: class Model : NSObject { public: NSString *key; }; 编译器一点也不喜欢它 它告诉我基说明符必须是类 我能做什么鬼鬼祟祟的事吗 我是否应该把它作为一个标准的目标C++对象?< /p> 不能混合C++与ObjuleC类之间的继承。 < P> >,只需制作一个标准的Objto-C++对象,它封装了C++对象。教Obj-C对象如何将所有内容传递给C++对象.在MVC设计模式中,控制器应该管理您的模型在表视图中的表示方式。因此

这就是我试图做的:

class Model : NSObject {
public:
    NSString *key;
};
编译器一点也不喜欢它

它告诉我基说明符必须是类

我能做什么鬼鬼祟祟的事吗


<>我是否应该把它作为一个标准的目标C++对象?< /p> 不能混合C++与ObjuleC类之间的继承。
< P> >,只需制作一个标准的Objto-C++对象,它封装了C++对象。教Obj-C对象如何将所有内容传递给C++对象.

在MVC设计模式中,控制器应该管理您的模型在表视图中的表示方式。因此,您可以只保留C++对象,TabLVIEW控制器将有指针指向它,TabVIEW控制器将决定在表视图中显示的情况。

不,不可能。 C++和Objective-C类的实现方式非常不同。 C++使用VTABLE进行函数查找,并且是静态的。 然而,Objective-C使用动态字典查找,并且可以在运行时添加方法

但是,您可以使用对象合成来执行您想要的操作:

// MyCPPClass.cpp
class MyCPPClass {
    int var;

public:
    void doSomething(int arg)
    {
        var += arg;
        std::cout << "var is: " << var << std::endl;
    }
};

// MyCPPWrapper.h
#ifndef __cplusplus
typedef void MyCPPClass;
#endif

@interface MyCPPWrapper : NSObject
{
    @public
    MyCPPClass *cppObject;
}

-(void) doSomething:(int) arg;

@end

// MyCPPWrapper.mm
@implementation MyCPPWrapper

-(void) doSomething:(int)arg
{
    if (cppObject)
        cppObject->doSomething(arg);
}

@end

// main.mm
int main(int argc, const char * argv[])
{
    @autoreleasepool {
        MyCPPWrapper *cppWrapper = [MyCPPWrapper new];
        cppWrapper->cppObject = new MyCPPClass();

        [cppWrapper doSomething:10];
        [cppWrapper doSomething:15];
    }

    return 0;
}
//MyCPPClass.cpp
类MyCPPClass{
int-var;
公众:
无效剂量测量(内部参数)
{
var+=arg;

std::这有道理吗,它有点像WPF@PaulWand是的,我希望你能动态地通过名字查找一个C++函数,这样我就可以使它完全自动化而不需要用户添加个人的功能。这就是我最后做的,我刚刚得到了它的工作联系视图模型*。con=[contacts objectAtIndex:[indexath行]];[cell.textlab setText:con->contact.name];