2013-06-11 55 views
7

我想了解一些C++代碼。我是一位有經驗的Java程序員,他正在努力學習C++。我已經閱讀了關於模板的一些詳盡文章,但是他們中沒有人回答我以下模板規範的含義。C++:模板<class>是什麼意思?

template< 
    template<template<class> class, class> class VisualOdometryTT, 
    template<class> class NodeBuilderTT, 
    class PoseGraphT> 
class VORosInterface{ ... }; 

我不明白的部分是template<class>其中我認爲缺少一些類型說明。但代碼編譯沒有問題。

+4

搜索「模板模板參數」。 – juanchopanza

回答

6

使用NodeBuilderTT作爲例子,因爲它更容易:

NodeBuilderTT是一個模板參數是本身不具有一個參數的模板 - 我們稱之爲Z

您也可以選擇將正式命名Z和代碼將編譯一樣的:

template<class Z> class NodeBuilderTT 

到目前爲止,這十分類似於聲明函數參數:

void foo(int x) {} // works 
void foo(int) {} // also works 

然而,隨着函數通常在函數體內使用名稱x。有了模板,你不能使用ZVORosInterface的定義,所以絕對不會有一點命名它,它是地道寫

template<class> class NodeBuilderTT 

我要感謝K-BALLO幫助打抱不平這裏。

+2

即使你足夠關心它的名字,它是沒有意義的,因爲你不能使用它。 –

+0

感謝您的解釋!現在對我來說很清楚,但是深入挖掘C++越多我愛Java :-D –

+0

@ K-ballo:你說如果我寫了'template