我正在創建一個鏈表類,我想要一個方便的默認引數用于我的“remove()”函式。
int size() { return size_; }
int remove(int index = size() - 1);
^[C2352]
這給了我一個錯誤呼叫非靜態成員函式需要一個物件,所以我嘗試了
int remove(int index = this->size() - 1);
但是this關鍵字不能在函式之外使用。出于安全原因,我想避免將size_ 設為公共變數。請注意,我的類是一個模板類。
對于找到解決方案的任何幫助,我將不勝感激。
uj5u.com熱心網友回復:
默認引數必須在編譯時系結,因此this不允許,因為它是運行時值。您可以使用自由/靜態函式,但我看不出設計將如何作業,因為它不會參考任何特定的串列實體。
在我看來,最好的解決方案是為你需要的東西使用一個特殊的值,例如:
class List
{
static constexpr int LAST_ELEMENT_INDEX = -1;
void remove(int index = LAST_ELEMENT_INDEX)
{
if (index == LAST_ELEMENT_INDEX)
index = size() - 1;
..
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/515158.html
標籤:C 功能班级模板论据
下一篇:基于Enum值的動態調度
