由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 这两个地方是否需要typename?
相关主题
如何 define/initialize static data member of a class templtypedef 的一个问题
boost::function 的 syntax 问题C++中size_type怎么处理?
C++ template Questions (转载)how to write a function take iterators as parameters?
STL感觉实在太变态了C++ template
C++ 菜鸟问一个关于template 的问题。a c++ question
c++ template question:请教一下这个template function在gcc下要怎么修改
templatewhere to define my template function
C++ question about template typedefOne c++ non-type template question
相关话题的讨论汇总
话题: typename话题: container话题: xx话题: int话题: type
进入Programming版参与讨论
1 (共1页)
d*******n
发帖数: 524
1
对typename这个关键词的用法非常不理解,下面这段代码里面划下划线的地方是否需要
typename?为什么?谢谢
class NotEnoughElements {};
template
typename Container::value_type
Reduce(const Container& c, Function fn) throw (NotEnoughElements)
{
if(c.size() < 2)
throw NotEnoughElements();
______ Container::value_type result = *c.begin();
for(______ Container::iterator it = c.begin()+1; it < c.end(); it
++)
{
result = fn(result, *it);
}
f*******y
发帖数: 988
2
要用的
一般是个type就都敲上比较保险

【在 d*******n 的大作中提到】
: 对typename这个关键词的用法非常不理解,下面这段代码里面划下划线的地方是否需要
: typename?为什么?谢谢
: class NotEnoughElements {};
: template
: typename Container::value_type
: Reduce(const Container& c, Function fn) throw (NotEnoughElements)
: {
: if(c.size() < 2)
: throw NotEnoughElements();
: ______ Container::value_type result = *c.begin();

d*******n
发帖数: 524
3
我对这个typename的用法非常不清楚,大牛可不可以给科普一下什么时候该用什么时候
不该用?
或者给个链接讲这个问题讲的比较清楚的?
谢谢了

【在 f*******y 的大作中提到】
: 要用的
: 一般是个type就都敲上比较保险

f*******y
发帖数: 988
4
就是你模仿编译器想想,你知道Container::value_type是个类型么?
不知道吧,那你加上就对了

【在 d*******n 的大作中提到】
: 我对这个typename的用法非常不清楚,大牛可不可以给科普一下什么时候该用什么时候
: 不该用?
: 或者给个链接讲这个问题讲的比较清楚的?
: 谢谢了

d***q
发帖数: 1119
5
whey you want to use it as a type let compiler know it is a type.
for example
you define
class XX
{
public:
typedef in Int;
};
when you try to use the type to define some variables like:
XX::Int xx; compiler will consider that XX::Int is a static variable.
you must tell compiler XX::Int is a type so you need to write:
typename XX::Int xx;
d***q
发帖数: 1119
6
when you want to use it as a type you must tell compiler it is a type.
the typename is used for that.
for example
class XX
{
public:
typedef int Int;
};
when you want to use Int to defines some variables, you probably will write
like: XX::Int xx; however compiler will complain XX::Int is not a type
instead a static variable. In order to inform compiler it is a type, put
typename ahead like: typename XX::Int xx;
1 (共1页)
进入Programming版参与讨论
相关主题
One c++ non-type template questionC++ 菜鸟问一个关于template 的问题。
intel icc hash_map 求救!c++ template question:
[菜鸟问题]类模板问题template
stl 的 member type 看起来挺头大的C++ question about template typedef
如何 define/initialize static data member of a class templtypedef 的一个问题
boost::function 的 syntax 问题C++中size_type怎么处理?
C++ template Questions (转载)how to write a function take iterators as parameters?
STL感觉实在太变态了C++ template
相关话题的讨论汇总
话题: typename话题: container话题: xx话题: int话题: type