gpt4 book ai didi

c++ - C++中的全局动态分配结构

转载 作者:行者123 更新时间:2023-11-28 00:59:52 25 4
gpt4 key购买 nike

我在尝试使用没有初始大小的结构数组时遇到问题。我该怎么做呢?这是我的结构:

struct carbon {
double temp;
double mass;
rowvec::fixed<3> position;
rowvec::fixed<3> velocity;
rowvec::fixed<3> force;
} *atom;

在我的程序中,我像这样分配结构数组的大小:

  atom = new carbon[PARTICLE_NUM];

问题是我如何在其他文件中使用这个结构。我创建了一个头文件并将其放入其中

extern struct carbon *atom;

但是出现了这个错误:

setup_pos.cpp:19: error: invalid use of incomplete type ‘struct carbon’
system_setup_distances.h:18: error: forward declaration of ‘struct carbon’

我知道我不应该使用全局变量,但我只想先测试一下。预先感谢您的帮助。

最佳答案

使用atom 的源文件需要carbon 结构的完整定义。

将结构和外部放在同一个头文件中,像这样:

struct carbon {
double temp;
double mass;
rowvec::fixed<3> position;
rowvec::fixed<3> velocity;
rowvec::fixed<3> force;
};

extern struct carbon *atom;

在您的源文件之一中定义变量 atom:

struct carbon *atom = 0;

现在,每当您需要访问 atom 时,包括结构和外部声明所在的头文件,它应该可以工作。

附言。您可以将它放在自己的命名空间中,而不是在全局命名空间中使用 atom 变量:

namespace some_clever_name
{
struct carbon { ... };
extern carbon *atom;
}

并将其放入源文件中:

some_clever_name::carbon *some_clever_name::atom = 0;

关于c++ - C++中的全局动态分配结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9350609/

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