2016-01-22 52 views
1

我有下面的代碼塊:typename語句中的_t(下劃線-t)代表什麼類?

template<template<typename ...> class ProxyType_, template<typename> class AttributeExtension_> 
struct DefaultAttributeProxyHelper; 

template<template<typename ...> class ProxyClass_, template<typename> class AttributeExtension_> 
std::shared_ptr<typename DefaultAttributeProxyHelper<ProxyClass_, AttributeExtension_>::class_t> 
createProxyWithDefaultAttributeExtension(const std::string &_domain, const std::string &_instance); 

我不能夠理解哪些呢下面的語句class_t意味着什麼呢聲明終於意味着

typename DefaultAttributeProxyHelper<ProxyClass_, AttributeExtension_>::class_t 
+1

這是一個通常用於表明名稱是'typedef'的約定。在這種情況下,它可能指的是某種類型的DefaultAttributeProxyHelper以某種方式處理,這取決於它實例化的模板參數。有點像['std :: vector :: value_type'](http://en.cppreference.com/w/cpp/container/vector#Member_types)。但是,無論如何,你都必須查看'DefaultAttributeProxyHelper'的文檔。 – BoBTFish

回答

1

這只是一個慣例使用typedef命名數據類型。它來自沒有命名空間的C語言,因此必須使用這種約定來避免名稱衝突。

0

這是一個古老的C約定,用於記住名稱是什麼:_t用於數據類型,_s用於結構,_e用於枚舉等等。

相關問題