无法链接简单的代码

时间:2017-10-06 12:55:48

标签: c++ linker

我在以下文件中有这个简单的代码:

Stat.h

#ifndef STAT_H
#define STAT_H

class Stat {
    public:
        void compute_value();
};

#endif

Stat.cpp

class Stat {
    public:
        void compute_value() {
        }
};

的main.cpp

#include "Stat.h"

int main(void)
{
    Stat stat;
    stat.compute_value();
}

当我尝试编译时,我收到以下错误:

clang++ -std=c++14 -Wall -Wextra -pedantic -Weverything -O3 Stat.cpp main.cpp -o main
/tmp/main-0466d7.o: In function `main':
main.cpp:(.text+0xf6a): undefined reference to `Stat::compute_value()'
clang: error: linker command failed with exit code 1 (use -v to see invocation)

1 个答案:

答案 0 :(得分:3)

您正在重新定义 Stat.cpp 源文件中的类,因为定义也是一个声明。您只需要在 Stat.cpp 源文件中定义成员函数并包含 Stat.h 标题,而不是整个类重新定义:

#include "Stat.h"

void Stat::compute_value() {}