标题:traits问题
只看楼主
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
结帖率:95.37%
已结贴  问题点数:20 回复次数:5 
traits问题
#include <iostream>  
#include <typeinfo>
#include <iterator>

using namespace std;  
 
class A
{
    public:
        A(int i=10)
        {
            k=i;   
        }
        int k;
};

template<class it>
void fun(it)
{
     typename iterator_traits<it>::reference reference;//编译时这行总是提示  [Error] 'reference' declared as reference but not initialized
        cout<<typeid(reference).name()<<endl;
}
int main( )   
{  
   
   A *a=new A(6);
   fun(a);
}
搜索更多相关主题的帖子: include class int fun reference 
2018-09-26 20:51
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:10 
引用需要初始
比如 int& r; 就缺少初始化
2018-09-26 23:42
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
https://en.
2018-09-26 23:48
Jonny0201
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:52
帖 子:488
专家分:2603
注 册:2016-11-7
得分:10 
对 a type_traits 实际上是对 A * 的 type_traits
T * 的 type_traits 的 reference 是 T &
如一楼所说, 引用都是需要初始化的
翻译一下
 typename iterator_traits<it>::reference reference;
就是 T &reference;
这样的语句明显不合法
2018-09-27 12:31
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
得分:0 
回复 4楼 Jonny0201
好的谢谢。
2018-09-27 15:58
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
得分:0 
回复 3楼 rjsp
谢谢
2018-09-27 15:58



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




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

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