我有這樣的結構
template <typename T>
struct container
{
T norm() const
{
T sum = 0;
for (unsigned int i = 0; i < length; i )
{
sum = value[i];
}
return sum;
};
private:
T *value{nullptr};
unsigned int length{0};
};
我有一個 norm() 方法,可以添加“值”中的所有值。我需要撰寫這個方法,以便它可以添加數字并連接字串、字符。問題是我不明白如何確定傳遞什么型別的變數以及如何設定“總和”的型別我想確定第一個元素的大小并從中確定變數的型別,但也許有更好的方法嗎?
uj5u.com熱心網友回復:
要初始化 a T,在模板函式中執行該操作的方法是使用大括號初始化器:
T sum = {};
T如果您默認構造(對于類,例如std::string)或值初始化(對于型別,例如int,double等) ,這會將 sum 初始化為任何型別。對于整數型別,double, float,它是 0。因為std::string它是一個空字串,等等。
在再次查看您的norm功能后,以下內容也應該給出相同的結果(未經測驗):
template <typename T>
T norm() const
{
return std::accumulate(value, value length, T{}, std::plus<T>());
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/511339.html
標籤:C 仿制药
