编译 C++ 代码时未定义的引用构造函数

Undefined reference constructor while compiling C++ code

当我尝试使用 g++ main.cpp 编译三个 c++ 文件时收到以下错误。如果我将它们组合在一个文件中,它就可以工作。

main.cpp:(.text+0x10): undefined reference to `Time::Time()'

Time.cpp

#include <iostream>
#include "Time.h"
using namespace std;

Time::Time()
{
    a=5;
}

Time.h

#ifndef TIME_H
#define TIME_H

class Time {

public:
Time();
private:
int a;
};
#endif

main.cpp

#include <iostream>
#include "Time.h" 
using namespace std;


int main()
{
    Time t;
}

您需要编译所有 CPP 文件,因为每个文件都是单独的compilation unit

g++ main.cpp Time.cpp -o main

有关该内容的更多信息,请阅读

  • How is compilation unit defined in c++?
  • What is a "translation unit" in C++