繁体   English   中英

将现有的C ++框架链接到Objective-C + Cocoa应用程序

[英]Linking existing C++ framework to an Objective-C + Cocoa application

我已经为学校的Windows开发了一个工作框架,其中包含窗口工作所需的所有课程和方法。 这是几个类的一部分的示例,我不会在这里粘贴所有代码。

Widget.h(基类)

class Widget {
    public:
        Widget(...);
        ...
        virtual std::string getLabel() const;
        virtual void setLabel(const std::string label);
        ...
    private:
        std::string m_label;
        Widget* m_parent;
        Measure m_position; // struct: int x, int y
        Measure m_size;
};

按钮

class Button : public Widget {
    public:
        Button(...);
        ...
        virtual void setTarget(Widget* target);
        ...
    private:
        Widget* m_target;
};

LineEdit.h

class LineEdit : public Widget {
    public:
        LineEdit(...);
        ...
        virtual void setMaximumLenght(int lenght);
        ...
    private:
        int m_maximumLength;
};

依此类推...这些都只是头文件,并且我已经在相应的.cpp文件中实现了方法等。

我这段时间的功课是在Objective-C和Cocoa中为Mac的OS-X实施它们,因此标头在OS-X和Windows中都可以使用。 我可以自己休息一下,但是我想知道如何在OS-X中使用这些头文件,因此只需将实现重写为.m文件而不是.cpp 有任何想法吗? 我是新手。

您可以在同一项目中合并.cpp文件和.m文件,这意味着如果您的实现没有Windows特定的代码,则可以将其添加到项目中并进行编译。 还有Objective-C ++的概念。 有了它,您就可以使用C ++和Objective-C在.mm文件中编写代码,并在它们之间进行调用。

另一方面,如果您确实需要在Objective-C中实现所有功能,则需要重写标头以定义Objective-C类(而不是C ++类),并重写实现。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM