討論區快速選單
知識庫快速選單
政府補助!學嵌入式+物聯網 網路投保旅行平安險 討論區最近新進100則主題
[ 回上頁 ] [ 討論區發言規則 ]
[分享]template 參數的 class 和 typename 還是有差別
更改我的閱讀文章字型大小
作者 : cxxlman(CxxlMan) C++優秀好手貼文超過1000則
[ 貼文 1012 | 人氣 3227 | 評價 1260 | 評價/貼文 1.25 | 送出評價 27 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2017/12/25 下午 03:39:57
若是要做 class 用,就明確指名 class

// template<typename H> 這在 vs2015 過不了
template<class H>
class A
{
 void f()
 {
  cout << "OK" << endl;
 }
public:
 friend H;
};

class B
{
public:
 void f()
 {
  On_a.f();
 }

 A<B> On_a;
};
作者 : ice_emissary(燃燒的大地) 貼文超過200則
[ 貼文 357 | 人氣 0 | 評價 1730 | 評價/貼文 4.85 | 送出評價 16 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人cxxlman註記此篇回應為最佳解答 2017/12/25 下午 03:52:49
請看這篇文章:
https://stackoverflow.com/questions/213121/use-class-or-typename-for-template-parameters

大意就是一開始制定 template `class` 這個用法是為了避免加入太多的新關鍵字,
然而實際使用上,class 這個名字卻反而容易讓閱讀者產生混淆,
所以後來就還是決定加入一個新的關鍵字 typename。
但為了相後相容,class 這名字仍然可以使用。

總結的意思就是,templateclass 和 typename 是等效的!

看來又是 VS 莫名其妙的問題!
不過 VS 莫名其妙的問題本來就一籮筐,所以也見怪不怪了!
 板主 : simula
 > C++ - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - C++ - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
C++
1 Raymond 13050 
2 青衫 4760 
3 simula 4690 
4 coco 4030 
5 白老鼠(Gary) 3670 
6 ozzy 2540 
7 Ben 2250 
8 Anderson 1960 
9 windblown 1650 
10 Kenny 1560 
C++
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2018 程式設計俱樂部 http://www.programmer-club.com.tw/
0.140625