c++ 编译出现 undefined reference to,检查了很多遍还是没发现错误。

发布网友 发布时间:2022-04-21 05:35

我来回答

4个回答

热心网友 时间:2023-11-05 23:34

你只有Vector类的声明,没有实现阿。

-----

g++ -o exo3 fonction_exo3.o exo3.o

你需要把实现链接起来:
g++ Vector.cpp
g++ -o exo3 fonction_exo3.o exo3.o Vector.o追问

  Vector.h是我的头文件,里面有定义一个Vector类。

  fonction_exo3.cxx是我所有类外函数的定义。

  exo3.cxx是我的主程序,里面有定义对象,并且调用对象的成员函数。(应该就是类的实现)

  还有一个makefile是这样的

  然后我的主程序是这样的:

  

    追答exo3.cxx里还是没看到Vector类的实现啊,光有声明和调用没实现你让程序去哪里执行

    如果我理解你的意思是只想用标准的STL的std::vector而不是自己的Vector类,那你只要include 就可以了,STL的vector实现在标准库里面,默认会自动链接进你的程序, 声明在头文件里已经包括了。你自己写了一大段Vector的声明误导大家阿...

    热心网友 时间:2023-11-05 23:35

    Vector 是C++标准程序库中的一个类,如果你只需要使用自己定义的Vector类,最好用#include "vector.h",而不要用#include <vector>,否则会引用到标准程序库中的Vector,而不是你自定义的类,最好是换个头类名,不要和标准库类同名,挺麻烦的。追问我可能还没搞懂Vector这个类,意思是这样加了#include 在头文件中,我们就不需要再在头文件中声明一个vector类了吗,就可以直接在main.cxx主文件中直接定义一个vector对象,所有的类函数类似size()也都可以直接使用了?
    那头文件中加入了#include 后,还需要做什么呢?因为头文件中不就是放类的声明的吗?

    追答是的,Vectort类是一个模板类,你如果在main.cxx中添加了#include 文,就可以直接在main.cxx主文件中直接定义一个vector对象,所有的类函数也可以直接用,不需要再在自己的头文件里重新定义一个Vector类,除非你想自己写一个Vector,如果这样的话,你就要用和标准库不一样的命名空间区分开, namespace yourstd{.……}

    热心网友 时间:2023-11-05 23:35

    没看到函数申明啊

    热心网友 时间:2023-11-05 23:36

    Vector只有头文件吗??其实现呢?Vector.cpp之类的文件怎么没有见到啊??
    声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
    E-MAIL:11247931@qq.com