[英]Use a class function as a default parameter when the object is a parameter itself
我不知道是否可能,但我想做這樣的事情:
template <typename T>
int search(T array, int first = 0, int last = array.size())
{
}
這里T應該是一個容器,我想知道它的大小並將其用作默認參數。 那可能嗎?
編輯:是的,犯了一個錯誤,不是T而是數組。
因為T
不是對象,所以不能使用T.size()
。
您可以使用函數重載來完成您要嘗試的工作。
template <typename T>
int search(T const& array, int first, int last)
{
}
template <typename T>
int search(T const& array, int first = 0)
{
return search(array, first, array.size());
}
PS I將數組的類型從T
更改為T const&
。 這將防止在調用函數時進行復制。
這不可能。 相反,您應該將最后一個默認參數替換為普通參數,並在調用函數時傳遞容器的大小,例如,
template <typename T>
int search(T array, int last, int first=0)
{
// you can also directly use array.size() here,
// so no need for extra parameter
}
vector<int> v;
v.push_back(1);
v.push_back(2);
// call search
search< vector<int> >(v, v.size());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.