簡體   English   中英

在兩個結構(函數)中了解typedef的范圍

[英]Understanding the scope of a typedef in two structs (functors)

如果我typedef一個結構(仿)內的一些類型,是范圍typedef本地的結構?

考慮以下示例,其中我在兩個單獨的函子中將typdef'ed foo設為intdouble 這個例子正確嗎?

template <typename T> 
struct firstfunctor 
{ 
  typedef int foo; 

  foo operator()(const foo& a, const foo& b) 
  { 
    return /*whatever*/
  } 
}; 

template <typename T> 
struct secondfunctor 
{ 
  typedef double foo; 

  foo operator()(const foo& a, const foo& b) 
  { 
    return /*whatever*/
  } 
}; 

是的,typedef是作用域的,您可以分別定義成員類型firstfunctor::foosecondfunctor::foo

是的,typedef是作用域的。 使用它們時,您必須指定范圍。

這適用於對象,類和庫。 范圍通常限於一組{ }定義的內容。

是。

這也適用於函數和名稱空間。


該類型將是firstfunctor<>::foo限定的。 您可以將其設為私有,盡管C ++ 11的auto可以使您解決此問題。

是的,您可以將這些typedef用於有趣的元編程概念,從而將您在類中傳遞給模板(在這種情況下甚至是模板),並可以使用

typename X<T>::foo

獲得您的“動態”類型。

其中X是您的模板化模板參數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM