【问题标题】:Best way of declaring global variables? [closed]声明全局变量的最佳方式? [关闭]
【发布时间】:2012-12-01 13:01:45
【问题描述】:

我有一个 OpenGL 应用程序,它需要在多个 OpenGL 函数中使用矢量。据我所知,最好的处理方法是在头文件中声明向量,并将头文件包含在所有包含 OpenGL 函数的文件中。

问题是我在链接器阶段遇到了多重定义错误。什么是最好的解决方案?没有全局变量有没有更好的方法?

【问题讨论】:

  • 了解定义和声明的区别。在头文件中声明向量。在单个源文件中定义向量。
  • 我怀疑你真的需要一个全局的。将它作为参数传递有什么问题?
  • delnan,您不能将自己的参数传递给 OpenGL 函数!
  • 这是因为它们是预定义的回调。
  • OpenGL函数是什么意思呢?据我所知,OpenGL 没有定义回调。你在谈论 GLSL 着色器吗?有uniform

标签: c++ global declaration definition


【解决方案1】:

在其中一个实现文件中定义您的向量,并在其他需要它的地方或头文件中声明extern

在大多数情况下,全局变量不是要走的路,但如果不查看整体设计,没人能确定哪种方式最适合您的情况。

【讨论】:

  • 好的,谢谢,我该怎么做呢?在包含我的类的头文件之后,我是否使用 extern 关键字声明一个类向量?
  • 是的。并确保在其中一个实现文件中进行单个定义
【解决方案2】:

另一种方式是使用单例模式

【讨论】:

  • 我收到了@JonSkeet 的评论,因为我建议...而不是正面的信息...
  • @ppeterka 我敢肯定他会比我更有礼貌。
猜你喜欢
  • 2016-09-18
  • 2013-06-05
  • 1970-01-01
  • 1970-01-01
  • 2010-10-01
  • 2011-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多