typedef base_type data_type是什么意思?

时间:2014-06-12 09:33:36

标签: c++

我常常看到声明开头的cpp类有这个写的

typedef base_type data_type

据我所知,这与使你的类与向量兼容有关。谁能指导我?

谷歌搜索这也将为您提供数百个使用此声明的链接。

1 个答案:

答案 0 :(得分:0)

typedef typename Base<T>::Foo Foo是模板编程的常用技术。

由于Base<T>取决于模板参数T,编译器无法知道对于任何特定类型T Base是否专用,以便Foo 1}}不是一种类型(或根本不存在)。

所以你必须告诉编译器它应该假设Foo是一个类型。

这很麻烦,是的。

但是模板非常有用,所以非常值得一点麻烦。 :)


除了上述内容之外,typedef只引入了一个替代名称,与原始名称只有非常细微的差别。

例如,给定int x = 42;语句x.~int();无效,但typedef int Int; x.~Int();没问题。

另一个微妙的区别是构造函数和析构函数的定义,你必须使用原始的类名。


在C ++ 11中,您可以使用using,其方式与typedef非常相似,例如using Int = int;