簡體   English   中英

控制到達非無效函數警告的結尾c ++

[英]control reaches end of non-void function warning c++

下面的代碼在該行的末尾生成“控件達到非void函數的結尾”警告。 可能出了什么問題? 從快速搜索來看,它似乎與返回值有關。

std::vector<csce::point<T>> compute_hull(std::vector<csce::point<T>>& points) const {

        for(std::size_t x=0; x<points.size(); x++){

            for(std::size_t m=1; m<(1<<(1<<x)); m++){
                std::vector<std::vector<csce::point<T>>> hulls;

                for(std::size_t i=0; i<points.size(); i=i+m){
                std::vector<csce::point<T>> chunk;

                if(points.begin()+i+m <= points.end())
                chunk.assign(points.begin()+i,points.begin()+i+m);

                else
                chunk.assign(points.begin()+i,points.end());            
                hulls.push_back(this->graham_scan(chunk));
            }


        std::vector<std::pair<int,int>> hull;

        hull.push_back(this->extreme_hullpt_pair(hulls));

        for(std::size_t i=0; i<m; ++i){
            std::pair<int,int> p = this->next_hullpt_pair(hulls,hull[hull.size()-1]);

            std::vector<csce::point<T>> output;

            if(p==hull[0]){

                for(std::size_t j=0; j<hull.size(); j++){
                    output.push_back(hulls[hull[j].first][hull[j].second]);
                }

                return output;
            }

            hull.push_back(p);


        }
            }
    }
}

正確格式化對於正確解釋編譯器警告和錯誤消息很重要!

此函數定義在您的函數末尾

        }
            }
    }
}

這是一個清晰的信號,表明您的格式/縮進已被嚴​​重破壞。

但是,將return語句放在最后一個大括號之前應該可以修復錯誤

    // ...
    return points; // <<<<
}

同樣要注意格式化,請始終弄清楚嵌套的代碼塊(最好使用花括號)

            if(points.begin()+i+m <= points.end()) {
                chunk.assign(points.begin()+i,points.begin()+i+m); 
            }
            else {
                chunk.assign(points.begin()+i,points.end()); 
            }         
            hulls.push_back(this->graham_scan(chunk)); // Outside if / else

在所有代碼路徑中, compute_hull應該返回std::vector<csce::point<T>>類型的值,但是如果條件if(p==hull[0]){始終失敗,則不會返回任何內容。 例如,您可以在函數的末尾,恰好在last }之前返回一個空向量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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