我在以下文件中有这个简单的代码:
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)
答案 0 :(得分:3)
您正在重新定义 Stat.cpp 源文件中的类,因为定义也是一个声明。您只需要在 Stat.cpp 源文件中定义成员函数并包含 Stat.h 标题,而不是整个类重新定义:
#include "Stat.h"
void Stat::compute_value() {}