簡體   English   中英

當對象本身是參數時,使用類函數作為默認參數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM