简化我的问题,我们可以考虑:
template <class T>
class Base{
typedef typename std::pair<T, T> pair;
};
template <class T>
class Inheritor : public Base<T> {
pair *p;
// mean that we want to use constructor of std::pair.
// say: std::pair withou argument list
Inheritor<T>::pair *p;
// dont see his typename
// say: pair does not name a type
typename pair *p;
// I was sure that it works.
// I dont know why it doesnt work.
// say: expected nested-name-specifier before 'pair
typename Inheritor<T>::pair *p;
// ok!
};
为什么我们不能写“类型名对”*P?我不明白继承人的原因::!它使代码变得更复杂和不好阅读!
聚苯乙烯
(公开的)。就像我说的“简化我的问题……”
typedef typename Base<T>::pair pair;
在我看来,这是一个…很难翻译的俄语单词
("коÑÑÑлÑ")
它看起来像是Kludge或Duct Tape或Hack=)
据我所知:
typedef继承通常的函数或变量。
但它是不可接近的(!!!!).
为了接近它,我们应该写
typedef typename base<t>::对;
或
typedef typename Inheritor<T>::pair pair;
看起来很有趣
Hindu code
但我们需要它!(& gt;& lt;)
公共范围内的勇气