【问题标题】:C++/Qt how to declare and initialize a global array of objectsC++/Qt 如何声明和初始化一个全局对象数组
【发布时间】:2013-08-29 14:11:37
【问题描述】:

如何使它成为一个全局对象数组,例如 QPoint point[5][6];

global.h

#include <QPoint>
extern QPoint point[5][6];//Am I correct?

global.cpp

#include &lt;global.h&gt; // How to initialize???

main.cpp

#include <global.h>
use them;

【问题讨论】:

  • 我强烈建议不要这样做。 Qt 库的整个结构是面向对象的;将全局变量放在那里会使代码难以阅读和维护,并且容易出错。在需要它的结构中定义QPoint,并考虑使用std::vector 或Qt 给定容器之一,而不是C 样式数组
  • 我的思想真的很难从面向过程的思想中转移出来。你有没有一些关于面向对象思想和如何设计好的类的好书或网站推荐给我。
  • stackoverflow.com/questions/388242/… 有一些很棒的书籍推荐,对于一般设计模式GoF 是一本不错的读物,但这不是 C++ 特定的

标签: c++ qt initialization global-variables declare


【解决方案1】:

全局变量是邪恶的。唉,惯用的做法是:

  1. 在头文件中声明全局变量 extern。
  2. 一个源文件中定义变量(仅此而已)。包含标头中的声明以确保定义正确。
  3. 在任意数量的源文件中使用该变量;包括标题中的声明。

global.h

#ifndef BENHUAN_GLOBAL_H_INCLUDED
#define BENHUAN_GLOBAL_H_INCLUDED
#include <QPoint>
extern QPoint point[5][6]; // declaration
#endif

global.cpp

#include "global.h'
QPoint point[5][6]; // definition

main.cpp

#include "global.h"

...
   point[1][2] = QPoint(5,6);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-22
    • 1970-01-01
    • 2012-11-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多