我正在使用C ++,无法理解箭头括号内的项目。
ReadOnlyArrayGattCharacteristic<uint8_t, sizeof(readValue)> readChar(readCharUUID, readValue);
在这个例子中,箭头括号内的内容是什么(&#34; uint8_t&#34;&amp;&#34; sizeof(readValue)&#34;是什么意思?
答案 0 :(得分:3)
您可能希望详细了解文档here。
<inbrackets>
表示template<typename T , unsigned NUM_ELEMENTS>
。根据ISO C ++(https://isocpp.org/wiki/faq/templates)
模板是一个cookie-cutter,它指定了如何剪切cookie 所有看起来都差不多(虽然可以制作饼干 各种面团,它们都具有相同的基本形状)。在里面 同样,类模板是一个cookie切割器,用于描述如何 建立一个看起来基本相同的类的家庭,和 功能模板描述了如何构建一个类似的外观系列 功能
类模板通常用于构建类型安全的容器(尽管如此) 这只会触及它们的使用方式。
例如
考虑一个容器class Array
,它的作用类似于整数数组:
// 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;
}
};
Array
float
char
std::string
Array
std::string
template<typename T>
T
T
int
float
的{{1}}重复上述内容等等,会变得单调乏味。相反,您在类定义之前添加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;
}
};
。此外,在引用特定实例时,不是仅仅将类称为private void objectListView1_BeforeSorting(object sender, BeforeSortingEventArgs e)
{
_shows.OrderByDescending(s => s.Name != "News").ThenBy(s => s.Name);
e.Handled = true;
}
,而是在引用模板时{{1}},或{{1}},{{1}}等。
{{1}}
阅读本书将有助于http://www.amazon.com/Template-Metaprogramming-Concepts-Techniques-Beyond/dp/0321227255