【问题标题】:Create a global array of objects in C++在 C++ 中创建一个全局对象数组
【发布时间】:2018-11-09 03:19:14
【问题描述】:

我正在制作鼓垫来学习 C++ 编程。

我正在使用一个名为 DrumSensor 的类,我需要在一个数组中创建 5 次。

我正在使用头文件“settings.h”来存储我将在整个代码中使用的变量。

settings.h

extern DrumSensor sensor[5];

settings.cpp

#include "settings.h"
DrumSensor sensor[5];

我对这个全局对象数组有很多经验,但我一直无法编译它。

我试图找到以下参考资料:

Creating Array of Objects c++

c++ global object

问题是,无论我如何尝试声明我的“DrumSensors”,我都会收到以下错误: ... ...的多重定义

您可以在此处查看代码: https://github.com/woodencase01/DrumSensor

【问题讨论】:

  • 这个问题似乎与你的情况有关,stackoverflow.com/questions/9196801/…
  • 请发布重现您的问题所需的最小代码。关于作者姓名等的 cmets 显然不需要重现您的问题。 minimal reproducible example 同样,... 不是有效的 C++。您还需要发布完整的错误消息,而不仅仅是部分。在这种情况下,我们需要查看您用于编译它的所有命令——不知何故,您将 settings.cpp 链接了两次。

标签: c++ arrays object


【解决方案1】:

关于您问题中的代码

你展示的方式是正确的。您在标头中声明了它(因此,通过扩展,在包括该标头的任何源文件中),并在源文件中定义了一次。

您一定是不小心将settings.cpp 链接了两次,或者不小心在某处包含了settings.cpp,或者您不小心在某处为该数组编写了另一个定义。


关于您指向我们的代码

FWIW,在您链接到的 GitHub 项目中,您没有settings.cpp,只有一个settings.h,其中定义了大量对象(即没有extern)。所以问题可能只是因为您正在构建的代码与您一直在谈论的代码不同。

【讨论】:

  • 感谢您的帮助!结果我忘了在 settings.cpp 中声明也是“extern”的变量。关于 Git 存储库,我的错,完全忘记了最后一次推送!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-08
  • 1970-01-01
相关资源
最近更新 更多