【发布时间】:2016-09-27 07:16:16
【问题描述】:
我一直面临这样的情况,即我有一个带有一些模板参数的类,我希望通过CLASS::TYPE 公开可用。为此我总是做公共类型定义,像这样:
template <class Tx>
Class C
{
public:
typedef Tx Ty;
};
这很尴尬有两个原因:
- 感觉笨重且多余
- 为了避免遮蔽,我需要为同一事物指定两个不同的名称(
Tx和Ty),这让我很烦恼。
有更好的方法吗?
【问题讨论】:
-
在标准库中,
typedef是一小组名称中的一个常见约定,例如,element_type、value_type或type,基于上下文。不能说我认为这样做有很大的问题。 -
@AmiTavory 抱歉,我有点不知道这是如何回答我的问题。你能帮我多一点吗?
-
这实际上不是一个答案,只是一个评论。 1. 如果你使用库约定,模板参数将是大写,类型是小写,所以不会发生阴影,而且,比较容易猜出类型的名称是什么。 2. 由于标准库可以做到这一点,这表明没有简单的替代方案。 ---- 再说一次,我不认为这是一个完整的答案,所以这就是我写它作为评论的原因。
标签: c++ templates typedef public