使用类标头对函数的未定义引用[重复]

Posted

技术标签:

【中文标题】使用类标头对函数的未定义引用[重复]【英文标题】:Undefined reference to function using Class header [duplicate] 【发布时间】:2021-07-03 02:06:58 【问题描述】:

我一直在关注如何使用头文件创建类的教程,即使我按照教程中的所有操作都遇到了问题。我有 Cat.h、Cat.cpp 和 main.cpp 文件。它们都在同一个文件夹中。

猫.h:

#ifndef CAT_H_
#define CAT_H_

class Cat

public:
    void speak();
;

#endif

Cat.cpp:

#include <iostream>
#include "Cat.h"

using namespace std;

void Cat::speak()

    cout << "Meeeow!" << endl;

main.cpp:

#include <iostream>
#include "Cat.h"

using namespace std;

int main()

   Cat jim;
   jim.speak();

   return 0;

当我运行程序时出现错误:“未定义对 `Cat::speak()' 的引用”。当我将 #include "Cat.cpp" 添加到 main.cpp 行时,问题就解决了,但我不认为这是一种可行的方法,并且没有它,教程就完成了。

【问题讨论】:

你是如何编译你的代码的? 在不知道您使用什么构建工具链的情况下,唯一合适的答案是:***.com/questions/12573816/… 您的描述听起来好像您没有编译和链接 Cat.cpp。 我在 VS Code 中运行代码,同时安装了 MinGW 编译器。我使用 Code Runner 扩展运行代码(我认为手动编译代码?)如何编译和链接 Cat.cpp?我是这些东西的新手。 您需要修改您的 tasks.json 以获取它来构建您的所有源代码。该文档解释了默认设置是仅构建活动文件以及如何进行更改以构建工作区文件夹中的所有 cpp 文件:https://code.visualstudio.com/docs/cpp/config-mingw#_modifying-tasksjson 【参考方案1】:

解决了。对于使用带有 Code Runner 扩展的 VS Code 时遇到相同问题的任何人,我在不同的线程中找到了解决方案: Code-runner configuration for running multiple cpp classes in vscode

【讨论】:

我上面的评论有点太慢了。您不想做出有效链接到现有问题的答案。更愿意将问题作为另一个问题的副本关闭。

以上是关于使用类标头对函数的未定义引用[重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用 QT 时对构造函数的未定义引用 [重复]

对带有数组的构造函数的未定义引用[重复]

与代码块一起使用时,使用 Visual Studio 创建的静态库显示对 Myfunction 的未定义引用

对 glew 的未定义引用 [重复]

声明和定义函数静态会产生“对 function_name() 的未定义引用”

对`__glewCreateShader`的未定义引用[重复]