簡體   English   中英

沒有對象就無法調用成員函數。 C ++

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

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