虚幻引擎射击游戏示例中“类DataType *变量”中的“类”是什么

时间:2015-04-11 16:34:07

标签: c++ unreal-engine4

我最近下载了针对虚幻4引擎的射击游戏,我只是试图挑选c ++但我的c ++不是最好的我注意到一个名为

的变量
class AShooterCharacter* MyPawn; 

ShooterWeapon.h

的标题文件中设置

我想了解class部分是什么。

[编辑] 我注意到有人贬低了我的问题所以我把它改成了一个问题。我希望人们愿意帮助而不是降低我的问题。这不是一个愚蠢的问题:)...特别是在编程中

3 个答案:

答案 0 :(得分:8)

如果AShooterCharacter已经在范围内,那么它可能基本上没什么意义。

class AShooterCharacter* MyPawn;
// ^ the same as just:
// AShooterCharacter* MyPawn;

在C中,命名结构类型时,必须使用struct关键字:

struct Foo
{
   int x, y, z;
};

struct Foo obj;

在C ++中,您不需要这样做,因为Foo本身就是一个可命名的类型:

Foo obj;

但如果你愿意,你仍然可以struct Foo

同样适用于class,这也是语言语法和语义如何定义的结果。

只有两次有所作为。

用法1:消除歧义(种类)

您可以使用它来指定您希望在其他名称隐藏时引用范围内类型名称,例如:

class Foo {};

int main()
{
   const int Foo = 3;

   // Foo x;     // invalid because `Foo` is now a variable, not a type
   class Foo x;  // a declaration of a `Foo` called `x`;
}

但如果你发现自己“需要”这个,那么在我看来,你有更大的问题!

用法2:转发声明

否则,它与执行此操作相同:

class Foo;   // a forward declaration
Foo* x;

如果要转发声明类型并立即声明指向该类型对象的指针,它可以保存一行代码。

但这并不常见。

答案 1 :(得分:2)

这就是所谓的“前瞻性声明”。

它允许您指定指向类/结构名称的指针,这样您就不必包含定义该类/结构的特定头文件。

在打破头文件之间的循环依赖关系时,此功能特别可行。

您可以通过检查AShooterCharacter包含的任何文件中未定义ShooterWeapon.h来验证是否属实。

答案 2 :(得分:0)

让我们做一个小介绍(来自Wikipedia

  

类是用关键字声明的用户定义类型或数据结构   具有数据和函数(也称为方法)的类作为其成员   其访问权限由三个访问说明符私有,   protected或public(默认情况下访问类的成员是   私人的)。 C ++中的一个类(用关键字class声明)与a不同   结构(用关键字struct声明)默认为成员   他们在一个结构中是公共的,在课堂上私人。私人的   会员在课外无法访问;他们可以访问   只能通过班级的方法。公众成员组成   类的接口,可以在类外部访问。实例   这些数据类型称为对象,可以包含成员   变量,常量,成员函数和重载运算符   由程序员定义。

一个类用于实现面向对象编程(OOP)

通过将关键字class放在标识符之前,它将变为数据类型(如int或char),但最重要的是您可以决定其中存在的所有内容。例如

class A
{
    int num;
    char ch;
  public:
    void getvalue ( )
    {
       std::cin >> num >> ch ;
    }
    void disp ( )
    {
       std::cout << num << std::endl << ch ;
    }
};

现在A是一个类,当你做

A myobject ;

myobject成为类A的对象,也就是说,它成为可以存储intchar值的数据类型(您可以添加任何其他数据)类型,如浮动)。

您可以调用函数getvalue()获取numch的值,然后输出值

myobject.getvalue();
myobject.disp()