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