私はC++を使いこなしており、矢印の括弧内の項目は理解できません。この例では矢印の中の単語( '<', '>')はC++で何ですか?
ReadOnlyArrayGattCharacteristic<uint8_t, sizeof(readValue)> readChar(readCharUUID, readValue);
、矢印括弧内の内容( "uint8_t" & "はsizeof(readValue)" を意味?
私はC++を使いこなしており、矢印の括弧内の項目は理解できません。この例では矢印の中の単語( '<', '>')はC++で何ですか?
ReadOnlyArrayGattCharacteristic<uint8_t, sizeof(readValue)> readChar(readCharUUID, readValue);
、矢印括弧内の内容( "uint8_t" & "はsizeof(readValue)" を意味?
はおそらくドキュメント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::string
のchar
のfloat
のArray
、のために上記何度も繰り返し、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
ありがとう@ tony-dはい私はダニを挿入するのを忘れました –
心配しないで - 喜んで助けてください。いい答え!乾杯。 –
移動を助けるC++の本を購入し、「テンプレート」の章に変わります。この本を読んでください。 –
テンプレートについてのビットを読んでください –
@SamVarshavchik - 全体の本を読むのが良い –