簡體   English   中英

C ++未定義參考

[英]C++ undefined reference

嗨,我的程序中有兩個構造函數。

BinaryImage();

BinaryImage(int MM, int NN, double* input_data, double thresh);

在我的主要

BinaryImage BinaryImageObj();

這樣編譯可以,但是當我調用第二個構造函數時;

BinaryImage BinaryImageObj2(MM,NN,data,1);

但是,這帶來了錯誤。

main.cpp ||未定義對`BinaryImage :: BinaryImage(int,int,double *,double)'的引用

為什么這樣做?我是否缺少簡單的東西?

謝謝

麥克風

此矩陣類構造函數創建對象

Matrix::Matrix(int MM, int NN, double* input_data){

                      M = MM;
                      N = NN;
                      data = new double[M * N];
                      for ( int i =0; i < M; i++)
                      {
                          for (int j = 0; j < N; j++)
                          {
                              data[i* N+j] = input_data[i*N+j];
                           //   cout << data[i*N+j] <<"\t";
                          }
                      //    cout <<"\n";
                      }

           cout << "This is the Matrix Constructor being invoked" << endl ;
}

binaryimage類(來自矩陣的繼承)

BinaryImage::BinaryImage(int MM, int NN, double* input_data, double thresh ):Matrix(MM, NN, input_data)
{
                      M = MM;
                      N = NN;
                      data = new double[M * N];
                      for ( int i =0; i < M; i++)
                      {
                          for (int j = 0; j < N; j++)
                          {
                              treshData(tresh);

                          }

                      }

}

主要

Matrix MatrixObj1(MM,NN,data2);

BinaryImage BinaryImageObj;

編輯以顯示最新情況。

您沒有實現構造函數,因此不會為它們生成任何符號。 您可以在類定義中實現它們:

BinaryImage() { };
BinaryImage(int MM, int NN, double* input_data, double thresh) { };

或在實現文件中(推薦)。

您的第一個示例:

 BinaryImage BinaryImageObj();

進行編譯是因為您要聲明一個名為BinaryImageObj的函數,該函數不帶任何參數並返回BinaryImage ,並且實際上BinaryImage按照您的想象創建BinaryImage對象。

正確的語法是

 BinaryImage BinaryImageObj;

暫無
暫無

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

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