C++未定义的引用
C++ undefined reference
嗨,在我的程序中,我有两个构造函数;
BinaryImage();
BinaryImage(int MM, int NN, double* input_data, double thresh);
在我的主要;
BinaryImage BinaryImageObj();
这编译得很好,但是当我调用第二个解释器时;
BinaryImage BinaryImageObj2(MM,NN,data,1);
但是,这会带来错误;
主.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(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 BinaryImageObj;
相关文章:
- 编译C++时未定义的引用
- 如何修复此错误:未定义对"距离(浮点数,浮点数,浮点数,浮点数,浮点数)"的引用
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- 对C宏的未定义引用,但在定义它时会出现重新定义错误
- 未定义的引用在哪里
- 编译时的 CImg 库返回对"__imp_SetDIBitsToDevice"的未定义引用
- 对Py_Initialize()的未定义引用
- 使用mysql c++连接器的未定义引用
- 未定义的引用 .. 使用 OpenCV 编译 C++ 代码时,从命令行
- 对 Scalar ::Scalar() 的未定义引用
- 已定义函数时出现 G++ "未定义的引用"错误
- 链接 cmake 时出现未定义的引用错误
- 对复制 CTOR 和 CTOR 的未定义引用
- 错误:未定义对'oboe::AudioStreamBuilder::openStream(oboe::AudioStream**)'的引用
- 右值引用未定义的行为
- 对"vtable for DigitalClock"的未定义引用 - 未定义对"DigitalClock::staticMetaObject"的引用 - Qt
- 函数类型到函数类型的引用:未定义的引用
- avcodec_alloc_context引用未定义,但ffmpeg链接顺序正确
- 从c++调用Fortran子程序,链接时引用未定义
- 枚举引用未定义,但位于包含的头文件中