0

大意:

我为 dijkstra 的算法写了一段代码,我很花花公子。但是,我需要在其他代码和其他东西中调用该函数(从头文件中)。但是我只需要在调用函数时存储变量(因此一旦调用函数,它将返回变量,但不会从以前的调用返回变量)。我需要在其他代码/文件中引用这些变量。

我如何存储变量:

一个包含两个向量的结构。

我的问题:

最好创建一个 .h 文件来存储结构并仅更改那里的变量,还是有办法从另一个文件中的另一个函数调用变量并使用它而不必担心内存问题等等?

另外......如果我的 int main 没有参数,我将如何为这个 dijkstra 算法设置我的 .h 文件?......

-编辑-

typedef struct
{
 int a;
 int b;
} STR;

STR Func()
{
 STR str;

str.a = 5;
str.b = 6;
return str;
}

我的代码的基本模型。但我需要引用结构,它是另一个文件中的变量,具有另一个函数。但是,我在编译时得到未定义的对“main”错误的引用,所以我添加了一个调用 Func() 的 int main()。建议?

-编辑dos-

建议的修复

.h 应包括:

struct_name dijkstra(input variables)

.cpp 应包括:

#include "dijkstra.h"

typedef struct{
blah...
}struct_name;

struct_name dijkstra{
struct_name retval;

function def...
return retval;
}

main.cpp 应包括:

#include "dijkstra.h"
#include "dijkstra.cpp"

int main(){

initialize variables... blah
struct_name return_struct = dijkstra(input variables);

return 0;
}
4

1 回答 1

0

通常,您会将算法所需的所有输入数据作为输入参数传递,并返回算法创建的所有有用输出数据作为返回类型。如果您需要将几条信息捆绑在一起,您可以创建一个单独的 C++ 结构或类。

对于算法内部使用的数据结构 - 您通常只会在 .cpp 文件中声明它们,而不是在 .h 文件中。因此,用户将无法访问/查看内部(如果您想稍后更改它的工作方式,这很有用)。

因此,头文件应该只有函数声明——带有输入参数和输出返回类型。所有算法代码都进入 .cpp 文件,其中包括 .h 文件。头文件是“接口”,cpp 文件是“实现”,我们试图将它们分开。

编辑:(总结后续讨论的有用点)

本教程展示了 2 个 .cpp 文件和一个 .h 文件如何组合在一起。基本上两个 .cpp 文件都包含 .h 文件。.h 文件包括声明(对于函数类型和结构类型),但不包括函数定义:

www.learncpp.com/cpp-tutorial/19-header-files/

由于您使用的是 g++,因此您可以使用以下命令将它们编译为单个可执行文件:

g++ -o 可执行文件名 main.cpp dijkstra.cpp

于 2013-07-31T19:28:37.050 回答