typedef in C++ - 需要帮助理解

typedef in C++ - Need help understanding

本文关键字:帮助 助理 in C++ typedef      更新时间:2023-10-16

我理解typedef的一般概念。但是我遇到了这个,不知道这意味着什么:

typedef PackedIntItem <uint16_t, uint16_t, 0x0FFF, 0xF000, SomeClassName, uint16_t, 0xFFFF> SomeTypeName;
typedef <old name> <new name>;

表示我想为数据类型指定一个新名称。通常因为

  • 旧名字很长
  • 我们想抽象名称,以便我们可以轻松地从一种类型更改为另一种类型

在您的情况下,您有用例#1

typedef PackedIntItem<uint16_t, uint16_t, 0x0FFF, 0xF000, SomeClassName, uint16_t, 0xFFFF> SomeTypeName;

旧名字很长。现在你的问题归结为——那个长名字到底是什么?

它是一种模板化数据类型。这意味着它是这样形成的。

template<type T1, type T2> class Elephant
{
T1 widget;
T2 oleAtIt;
}

但在你的情况下有更多的 Ts。现在当你这样做时

Elephant<int, char> dumbo;

您实际上会得到一个类的实例,就好像您已经声明了一样

class Elephant
{
int widget;
char oleAtIt;
}

当您看到std::vector<int> listInt;时,这就是您正在使用的内容

在您的情况下,有人制作了一个具有异常大量参数的模板。看看你是否能找到它的声明

模板是一个巨大的话题。谷歌很多。玩得愉快