Objective-C ++:标题和类方法

时间:2013-07-01 16:01:49

标签: c++ objective-c objective-c++

过去几个月我一直在学习Objective-C,目的是编写iOS游戏。我希望能够让游戏相对容易移植到其他平台,所以我也一直在学习C ++。我的计划是用C ++编写大部分游戏,并在Objective-C中编写绘图和游戏循环。我知道(至少我被告知)这是可能的,但有一些事情我仍然感到困惑。

  1. 我还是C ++的新手,最初来自Java,将函数返回类型设置为无效是个坏主意吗?
  2. 有没有办法编写类函数?即。 className.function();而不是object.function();
  3. 我之前从未需要过我的C ++文件的头文件。有人能指出我的榜样吗?最好有一个具有构造方法的?我不知道它的返回类型是什么。 (它应该是指向类的指针吗?)

2 个答案:

答案 0 :(得分:1)

我将假设您的问题是关于如何编写C ++,因为这似乎是您所要求的。

  1. 完全没有,void函数在几乎所有语言中都被广泛接受,包括C ++和Objective-C。 (虽然很多人更喜欢返回bool成功/失败值)
  2. 您可能正在寻找static个功能。这些不需要实例化,但是它们的使用有一些限制(有关详细信息,请参阅here)。
  3. 任何非平凡的C ++项目都应该使用头文件。它们有多种用途,包括保持代码更有条理和模块化,在许多情况下减少编译时间,并帮助在设计之前概念化你考虑实施。
    将类分解为.h和.cpp文件时需要注意的一件重要事项是在定义函数时使用范围修饰符 ::。在.cpp文件中定义函数public void foo()时,在标题中声明它后,必须使用public void ClassName::foo() { }。这是因为您在标题的foo块中定义了class ClassName { },但您现在处于全局范围内。
    (至于你关于C ++构造函数的问题,如果应该是public ClassName::ClassName();,你不需要返回任何东西)。
  4. 现在显然,Objective-C中有许多不同点。例如,正如您所说,init方法(与C ++构造函数相当)会返回指向正在进行的对象的指针。如果您需要有关编写跨语言应用程序的特定信息,则应更新您的问题以使其更具体,或者打开一个新问题。

答案 1 :(得分:0)

  1. 没关系。

  2. 是:假设SomeClass.h:

    #pragma once
    
    class SomeClass {
    public:
        static bool myStaticMethod();
    };
    

    并在SomeClass.cpp中:

    #include "SomeClass.h"
    
    bool SomeClass::myStaticMethod() {
        // A static method
        return true;
    }
    
  3. 见上文第2部分的第一部分。

  4. 其他一些说明:

    一个。通过将所有.m文件重命名为.mm,将所有Objective-C接口代码更改为Objective-C ++。这样您就可以自由使用C ++代码。

    B中。我想不出一个B.