对象构造中的C++错误.未解析的外部符号

C++ Error in object construction. Unresolved External Symbol

本文关键字:外部 符号 C++ 对象 错误      更新时间:2023-10-16

我有三个文件,一个用于测试函数的main.cpp文件、一个类的头文件,以及声明对象和成员的cpp文件。

我试图在主文件中构造我的对象Matrix,但收到错误:Error: LNK2019 unresolved external symbol "public: __thiscall Matrix::Matrix(int,int)" (??0Matrix@@QAE@HH@Z) referenced in function _main Matrix Project

我只能假设这意味着我的构造函数出了问题。我使用它如下,它们都不起作用:

    Matrix* matrix = new Matrix(2, 3);
    Matrix test = Matrix(2, 3);

构造函数在*.h文件中声明如下:

Matrix(int numRows, int numCols);

然后在*.cpp文件中声明如下:

public:
    Matrix(int numRows, int numCols) {
        rows = numRows;
        cols = numCols;
        arr = new double*[numCols];
        for (int i = 0; i < numRows; ++i) {
            for (int x = 0; x < numCols; ++x) {
                arr[i][x] = 0;
            }
        }
    }

感谢您的帮助。我确信我错过了一些愚蠢的东西。

提前谢谢!

[EDIT]

为了提供信息,我认为变量rowscolsarr都在构造函数之上声明为类的private成员。

在.cpp文件中,您应该将声明的方法的定义放在头(.h)文件中。因此,.cpp文件应该看起来像:

Matrix::Matrix(int numRows, int numCols) { }

您正在做的是复制.cpp文件中的类定义,以便了解为什么会出现链接错误。

也许我应该发布我的整个代码,这样你们中的一个人就可以告诉我我:

A。在我的*.cpp文件和中重新定义类时将收到一个错误

B。需要在*.cpp文件中include my*.h文件,以便它知道从哪里获取类声明。很抱歉浪费你的时间。