gpt4 book ai didi

C++:包括头文件编译失败但包括源 cpp 文件编译

转载 作者:太空宇宙 更新时间:2023-11-04 15:28:41 25 4
gpt4 key购买 nike

这可能真的很简单,但它阻碍了我在 C++ 道路上的前进。我目前正在阅读 accelerated c++,我决定过度使用其中一个练习。一切正常,我的代码运行良好,直到我将它拆分为一个头文件和单独的源文件。当我导入包含我编写的一些函数的 .cpp 源文件时,一切运行正常。但是当我尝试通过头文件导入函数时,它失败了,我得到了以下错误。我正在使用 Geany 的 gcc 进行编译,到目前为止一切正常。感谢您的帮助。

错误:

g++ -Wall -o "quartile" "quartile.cpp" (in directory: /home/charles/Temp)
Compilation failed.
/tmp/ccJrQoI9.o: In function `main':
quartile.cpp:(.text+0xfd): undefined reference to `quartile(std::vector<double, std::allocator<double> >)'
collect2: ld returned 1 exit status

“stats.h”:

#ifndef GUARD_stats_h
#define GUARD_stats_h

#include <vector>

std::vector<double> quartile(std::vector<double>);

#endif

“stats.cpp”:

#include <vector>
#include <algorithm>
#include "stats.h"

using std::vector; using std::sort;

double median(vector<double> vec){
//code...
}

vector<double> quartile(vector<double> vec){
//code and I also reference median from here.
}

“四分位数.cpp”:

#include <iostream>
#include <vector>
#include "stats.h" //if I change this to "stats.cpp" it works

using std::cin; using std::cout;
using std::vector;

int main(){
//code and reference to quartile function in here.
}

最佳答案

编译失败,因为你只声明了这个函数。它的定义在不同的编译单元中,您不会将这两者链接在一起。

执行 g++ -Wall -o quartile quartile.cpp stats.cpp 它会起作用。

关于C++:包括头文件编译失败但包括源 cpp 文件编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1483491/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com