[英]Cannot call member function without object. C++
我正在制作一個合並排序類,該類具有接受向量,對其進行排序並返回它的函數。 看起來像這樣:
class MergeSort {
public:
template <class T>
static vector<T> sort (vector<T> a)
{
if (a.size()<=1)
{
return a;
}
else
{
//some code here(seperating the vector
vector<T> left=sort(leftVec);//recursive call
vector<T> right=sort(rightVec);//recursive call
vector<T>FinalVec;//this will be the final vector that is returned
FinalVec=merge(left,right);//will merge and sort when all the vectors
//getting issues here^^^^^
return FinalVec;
}
}
private:
template <class T>
vector<T> merge (vector<T> left,vector<T> right)
{
//some code here
return final;
}
};
我遇到的問題是當我嘗試去做時
** FinalVec =合並(左,右);
我得到的錯誤是:
錯誤:無法調用成員函數'std :: vector MergeSort :: merge(std :: vector,std :: vector)[with T = int]'而沒有對象FinalVec = merge(left,right); //
在我的主要嘗試中:
矢量古茲
gooz.push_back(7);
gooz.push_back(5);
gooz.push_back(4);
gooz.push_back(3);
gooz.push_back(2);
gooz.push_back(1);
gooz =歸並排序::(gooz);
//甚至無法在MergeSort的對象上使用它;
謝謝!
可能是因為您已經聲明了
vector<T> merge (vector<T> left,vector<T> right)
由於是私有的,因此無法從Main方法調用。
在靜態向量sort(向量a)中,它是期望對象,因為sort是靜態方法,而merge不是靜態的。 嘗試使用對象從排序調用或將merg設為靜態
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.