0

这些是我的文件。我正在尝试使用 main.cpp 中的另一个类打印一行,但它给出了错误“ undefined reference to poddy:poddy()

主文件

#include <iostream>
#include "poddy.h"

using namespace std;

int main() {
    poddy le;
    return 0;
}

豆荚

#ifndef PODDY_H
#define PODDY_H

class poddy {
    public:
        poddy();
};

#endif // PODDY_H

豆荚.cpp

#include "poddy.h"
#include <iostream>

using namespace std;

poddy::poddy() {
    cout << "I am llalala and use anoder class" << endl;
}

请帮帮我!

4

1 回答 1

4

您的 C++ 代码是正确的。“未定义的引用”是与您编译代码的方式有关的链接器错误。为了让它链接,使用这个命令行:

g++ poddy.cpp main.cpp

以下是详细信息:编译 C++ 代码的过程分为三个主要阶段 - 预处理、编译和链接。预处理器处理代码中的#define#include语句。编译器获取预处理的结果,并为每个翻译单元生成二进制代码(在您的情况下,有两个翻译单元 -poddy.cppmain.cpp)。最后,链接器在翻译单元内的部分二进制代码之间建立连接。

即使一次只呈现一个翻译单元,预处理器和编译器也可以完成它们的工作。然而,链接器必须一次“看到”所有翻译单元。当您在g++没有附加标志的情况下调用时,将调用编译器的所有阶段,包括链接器。这就是您需要一次列出所有翻译单元的原因。

于 2013-06-02T10:58:27.903 回答