簡體   English   中英

c++中用模板傳遞數組的問題

[英]Problem on passing array with template in c++

我是在 C++ 中使用模板的新手,但最近有一個問題困擾着我。 我正在為 CFD 編寫一個簡單的 LU 求解器,它可以理想地傳遞 2 維或多維數組。 但是編譯器注意到我發生了一個不合時宜的定義。 這是求解器頭文件:

template<size_t N,size_t M>
class Solver{
public:
    Solver();
    void LU_Solver(const double);

它的實現文件:

template<size_t N,size_t M>
Solver<N,M>::Solver(){
};
template<size_t N,size_t M>
void Solver<N,M>::LU_Solver(const double (&raw_Mat)[N][M]){
        int row = 0;
        int column = 0;
        while(row < N && column < N){
            double lower_sum = 0;
            double upper_sum = 0;
            for(size_t k=0; k<row; k++){
                lower_sum += Lower_Mat[row][k]*Upper_Mat[k][column];
                upper_sum += Lower_Mat[column][k]*Upper_Mat[k][row];
            }
            Lower_Mat[row][column] = raw_Mat[row][column] - lower_sum;
            Upper_Mat[column][row] = (raw_Mat[column][row]- upper_sum)/Lower_Mat[column][column];
            if(column < row){
                column++;
            }
            else if(column >= row){
                Upper_Mat[column][row] = 1;
                column = 0;
                row++;
            }
        }
};

在此處輸入圖片說明

問題出現在 LU_Solver 中,我用谷歌搜索了它,但沒有精確的解決方案。 我想問一下如何解決這個問題,或者有沒有其他方法來傳遞不確定大小的數組,謝謝?

聲明中的參數列表( const double )與定義中的參數列表( const double (&raw_Mat)[N][M] )不同,這應該足夠明顯了。

更改一個以匹配另一個。

聲明void LU_Solver(const double); 說函數LU_Solver只接受一個double LU_Solver值作為參數。 這與const double (&raw_Mat)[N][M]非常不同。 您需要確保聲明和定義中的參數都匹配:

template<size_t N,size_t M>
class Solver{
public:
    Solver();
    void LU_Solver(const double (&)[N][M]);

暫無
暫無

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

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