gpt4 book ai didi

c++ - main() 方法中包含的类

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:06:33 25 4
gpt4 key购买 nike

如果我有这样的代码

    main(int argc, char *argv[])
{
...
#include "Class1.H"
#include "Class2.H"
...

}

一般来说,main() 方法是每个应用程序的起点,main() 中的内容将被执行。我假设 main() 中包含的所有类的内容将在 main() 启动时执行,我的假设是否正确?

问候直

最佳答案

不,不,

首先,您不要在函数中#include 文件。您在文件的开头#include 一个文件,在其他声明之前。好的,您可以在任何地方使用#include,但您真的不应该这样做。

其次,#include执行 任何东西。它基本上只是一个复制粘贴操作。 #included 文件的内容(有效地)准确地插入到您放置 #include 的位置。

第三,如果您打算学习用 C++ 编程,请考虑选择我们的 recommended texts 之一。 .


你评论了:

I am working with the multiphaseEulerFoam Solver in OpenFoam and inside the main() of multiphaseEulerFoam.C are classes included. I assume that the classes have the right structure to be called in main()

可能是这样,我不怀疑这些类具有从 main 调用的正确结构。问题是 main#include 之后会出现格式错误,因为您将拥有本地类定义并且谁知道 main 中还有什么。

考虑一下。如果你有标题:

foo.h

#ifndef FOO_H
#define FOO_H

class Foo
{
public:
Foo (const std::string& val)
:
mVal (val)
{
}
private:
std::string mVal;
};

#endif

然后您尝试将其包含在 main 中:

main.cpp

int main()
{
#include "foo.h"
}

在预处理 #include 指令后,编译器将尝试编译的结果文件如下所示:

预处理main.cpp

int main()
{
#ifndef FOO_H
#define FOO_H

class Foo
{
public:
Foo (const std::string& val)
:
mVal (val)
{
}
private:
std::string mVal;
};

#endif
}

这是各种错误。第一,你不能像这样声明本地类。第二,Foo 不会像您假设的那样被“执行”。

main.cpp 应该看起来像这样:

#include "foo.h"

int main()
{
}

关于c++ - main() 方法中包含的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19707034/

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