2016-04-07 7 views
-3

私はC++を使いこなしており、矢印の括弧内の項目は理解できません。この例では矢印の中の単語( '<', '>')はC++で何ですか?

ReadOnlyArrayGattCharacteristic<uint8_t, sizeof(readValue)> readChar(readCharUUID, readValue); 

、矢印括弧内の内容( "uint8_t" & "はsizeof(readValue)" を意味?

+8

移動を助けるC++の本を購入し、「テンプレート」の章に変わります。この本を読んでください。 –

+0

テンプレートについてのビットを読んでください –

+0

@SamVarshavchik - 全体の本を読むのが良い –

答えて

3

はおそらくドキュメントhereの詳細を読むために何を望むん。

<inbrackets>template<typename T , unsigned NUM_ELEMENTS>を意味

。ISO C++(https://isocpp.org/wiki/faq/templates

A templaによりますTeは、 がすべて同じように見えるクッキーをどのようにカットするかを指定するクッキーカッターです(クッキーは のさまざまな種類の生地で作ることができますが、それらはすべて同じ基本形状を持っています)。 同様に、クラステンプレートは、すべてが基本的に同じに見えるクラスのファミリを作成する方法の説明のためのクッキーカッターであり、 ファンクションテンプレートは、同じように見える ファンクションのファミリを構築する方法を示します。

クラステンプレートは、タイプセーフなコンテナを作成するためによく使用されます( )。ただし、このテンプレートは、使用方法について表面のみを傷つけます。

// This would go into a header file such as "Array.h" 
class Array { 
public: 
    Array(int len=10)     : len_(len), data_(new int[len]) { } 
~Array()       { delete[] data_; } 
    int len() const     { return len_;  } 
    const int& operator[](int i) const { return data_[check(i)]; } // Subscript operators often come in pairs 
    int&  operator[](int i)  { return data_[check(i)]; } // Subscript operators often come in pairs 
    Array(const Array&); 
    Array& operator= (const Array&); 
private: 
    int len_; 
    int* data_; 
    int check(int i) const 
    { 
     if (i < 0 || i >= len_) 
     throw BoundsViol("Array", i, len_); 
     return i; 
    } 
}; 

std::stringcharfloatArray、のために上記何度も繰り返し、Arrayの実施例

について

は、整数のアレイのように作用する容器class Arrayを検討しますstd::stringなどは、面倒になる。代わりに、template<typename T>をクラス定義の前に追加します(Tには任意の識別子を指定できますが、特に例ではTが最も一般的です)。次に、intまたはfloatまたはcharの代わりに、データ型を参照する場合は、代わりにTを使用します。また、Arrayというクラスを参照するのではなく、テンプレートを参照するときはArray<T>、特定のインスタンスを参照するときはArray<int>,Array<float>などです。

// This would go into a header file such as "Array.h" 
template<typename T> 
class Array { 
public: 
    Array(int len=10)    : len_(len), data_(new T[len]) { } 
~Array()       { delete[] data_; } 
    int len() const     { return len_;  } 
    const T& operator[](int i) const { return data_[check(i)]; } 
    T&  operator[](int i)  { return data_[check(i)]; } 
    Array(const Array<T>&); 
    Array(Array<T>&&); 
    Array<T>& operator= (const Array<T>&); 
    Array<T>& operator= (Array<T>&&); 
private: 
    int len_; 
    T* data_; 
    int check(int i) const { 
    assert(i >= 0 && i < len_); 
    return i; 
    } 
}; 

それは、書店にhttp://www.amazon.com/Template-Metaprogramming-Concepts-Techniques-Beyond/dp/0321227255

+0

ありがとう@ tony-dはい私はダニを挿入するのを忘れました –

+0

心配しないで - 喜んで助けてください。いい答え!乾杯。 –

関連する問題