gpt4 book ai didi

c++ - 多个头文件和类有什么关系?

转载 作者:太空宇宙 更新时间:2023-11-04 14:18:31 26 4
gpt4 key购买 nike

我有一个菜鸟问题。我正在研究 C++ 结构和语法,但遇到了一些困难。我知道我的概念中遗漏了一些东西。因此,首先使用一些代码来帮助描述情况。

控制.h

#pragma once
#ifndef CONTROL_H
#define CONTROL_H

class Control
{
public:
Control();
~Control();
private:
public:
};

#endif /*CONTROL_H*/

控件.cpp

#include "Control.h"
#include "Hello.h"

Hello helloObj;

Control::Control()
{
}

Control::~Control()
{
}

int main()
{
int a = helloObj.HelloWorld();
return 0;
}

你好.h

#pragma once
#ifndef HELLO_H
#define HELLO_H

class Hello
{
public:
Hello();
~Hello();
private:
public:
int HelloWorld(void);
};
#endif /*HELLO_H*/

你好.cpp

#include "Hello.h"

Hello::Hello()
{
}

Hello::~Hello()
{
}

int HelloWorld()
{
return 5;
}

我尝试在 OSX 10.7 上用 g++ 编译 control.cpp 并得到

Undefined symbols for architecture x86_64:
"Hello::Hello()", referenced from:
__static_initialization_and_destruction_0(int, int)in cccZHWtd.o
"Hello::~Hello()", referenced from:
___tcf_1 in cccZHWtd.o
"Hello::HelloWorld()", referenced from:
_main in cccZHWtd.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status

是编译器、我的代码还是我的概念?我没有正确实例化某些东西吗?

任何对此进行更详细描述的链接将不胜感激。

最终我希望能够在另一个类中运行一个函数并返回结果......正常的 OO,保持你的程序模块化的东西......

最佳答案

您收到的错误是链接错误,而不是编译错误。
链接器无法找到上述函数的定义,因此会报告错误。您似乎没有在项目中包含包含函数定义的 Hello.cpp 文件。

确保 Hello.cpp 包含在您的项目中,并且是您项目的一部分或
如果您使用命令行进行编译和链接,请确保您在命令行的文件名中指定了 Hello.cpp

关于c++ - 多个头文件和类有什么关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9322157/

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