标题:型别是什么意思
只看楼主
最近不在
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:204
专家分:842
注 册:2010-2-28
结帖率:95%
已结贴  问题点数:20 回复次数:6 
型别是什么意思
template <class T>
class A
{
    typename T::SubType *ptr;
};
typename指出SubType是class T中定义的一个型别,因此ptr
是一个指向T::SubType型别的指针。

typename的用法,还有这个型别的意思不懂。
搜索更多相关主题的帖子: class 
2010-07-11 19:48
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
得分:5 
这个好像不是大陆地区的说法,其实就是类型。

★★★★★为人民服务★★★★★
2010-07-11 20:22
lintaoyn
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:605
专家分:2489
注 册:2009-4-8
得分:5 
说明T::SubType是一个类型。ptr就是指向T::SubType的指针。你要是不加typename的话编译器会理解成做乘法。编译器把T::SubType解释成类T里的数据成员。

迭代的是人,递归的是神。
2010-07-11 20:37
lintaoyn
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:605
专家分:2489
注 册:2009-4-8
得分:5 
说明T::SubType是一个类型。ptr就是指向T::SubType的指针。你要是不加typename的话编译器会理解成做乘法。编译器把T::SubType解释成类T里的数据成员。

迭代的是人,递归的是神。
2010-07-11 20:38
最近不在
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:204
专家分:842
注 册:2010-2-28
得分:0 
这样做有什么意义吗?能举点例子吗?还有这个T都未定义,如何来的SubType,更别说定义指向指向它的指针...不太懂,求例子
还有照这么说template <class T> T就是一货真价实的类?

2010-07-11 21:07
lintaoyn
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:605
专家分:2489
注 册:2009-4-8
得分:5 
如果你的类里没有SubType那不通不过编译的,模板实例化时编译器要做检查的。没有用typename默认里面的名字都是变量名而不是类型名,这也是为什么引进typename这个关键字,本来只是不打算引进关键字的,后来没办法解释一个名字是类名还是变量的才引进typename这个关键字。书里说的…BJ说的。

迭代的是人,递归的是神。
2010-07-11 22:20
最近不在
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:204
专家分:842
注 册:2010-2-28
得分:0 
程序代码:
// Note:Your choice is C++ IDE
#include <iostream>
using namespace std;

template <class T>
class A
{
public:
    typename T::SubType *ptr;
};

class T
{
public:
    typedef char SubType;
};

int main()
{
    int n = 68;
   
    A<int> obj;
   
    obj.ptr =  reinterpret_cast<char *> (&n);
   
    cout<<*(obj.ptr)<<endl;
   
    return 0;
}
刚开始我没写T的定义,编译通过了,是因为main函数也写动容。后来自己尝试写了个例子,清晰了!
2010-07-12 07:37



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-312661-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.810501 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved