-2

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

  1. 我对 C++ 还是很陌生,并且最初来自 Java,让函数返回类型为 void 是不是一个坏主意?
  2. 有没有办法编写类函数?IE。类名.function(); 而不是 object.function();
  3. 我以前从不需要 C++ 文件的头文件。有人可以指出我的例子吗?最好有一个具有构造函数的方法?我不知道它的返回类型是什么。(应该是指向类的指针吧?)
4

2 回答 2

1

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

  1. 一点也不,void 函数在几乎所有语言中都被广泛接受,包括 C++ 和 Objective-C。(虽然很多人更喜欢返回一个布尔成功/失败值)
  2. 您可能正在寻找static功能。这些不需要实例化,但它们的使用有一些限制(有关更多信息,请参见此处)。
  3. 任何重要的 C++ 项目都应该使用头文件。它们有多种用途,包括使您的代码更有条理和模块化,在许多情况下减少编译时间,以及在您考虑实现之前帮助您概念化您的设计。
    将类分解为 .h 和 .cpp 文件时要注意的重要一点是在定义函数时使用范围修饰符。 ::在 .cpp 文件中定义函数public void foo()时,在头文件中声明后,必须使用public void ClassName::foo() { }. 这是因为您在标头foo的块中定义了 while class ClassName { },但您现在处于全局范围内。
    (至于你关于 C++ 构造函数的问题,如果应该是public ClassName::ClassName();,你不需要返回任何东西)。

现在很明显,这些点中的许多在 Objective-C 中是不同的。例如init,正如您所说,该方法(类似于 C++ 构造函数)确实返回一个指向正在初始化的对象的指针。如果您想了解有关编写跨语言应用程序的具体信息,您应该将您的问题更新为更具体,或者打开一个新问题。

于 2013-07-01T16:24:11.220 回答
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 的第一部分。

其他一些注意事项:

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

B. 我想不出 B.

于 2013-07-01T16:21:26.910 回答