程序结构

时间:2011-08-03 17:22:58

标签: c++

我的文件很少:

main.cpp:
int main{
...
while(1){
...
draw();
...
}
...
return 0;
}

和draw.cpp: 我想在这里看到对象和所有操作。 我不能使draw()局部对象,因为draw()在循环内部, 所以我会得到许多对象构造函数/析构函数调用 - 所以它们是全局的。也 我做了init阻止以防止不必要的呼叫/分配

draw.cpp:
Object A, B;
int initialized = 0;
void draw(){
if(!initialized){
    A.initialization;
    B.initialization;
    initialized = 1;
}
A.move(1,1);
B.rotate(45);
}

它有效,但我正在寻找更好的方法来组织我的代码
补充:
感谢您的回答,看起来我必须阅读有关模式设计的内容

2 个答案:

答案 0 :(得分:2)

以下是让它更好地运作的步骤:

  1. 在main()附近添加包含所有对象的结构。
  2. 传递给画画(MyStruct& s);通过参考参数。
  3. 你已经完成了。

答案 1 :(得分:1)

选项1

定义一个名为Draw的新类,并将属性放入其中。您需要为此修改main和draw文件。有了这个,你可以避免声明任何全局

选项2

在draw.cpp中定义一个名为draw的类,并将当前的全局变量添加为静态成员变量。使用静态函数初始化并使用它们。有了这个,你不必改变主要。 这种设计技术称为Singleton(设计模式之一)

示例代码 draw.cpp

class Draw
{
public:
  object A, B;

  static void init()
  {
    // init A
    // init B
    isInitialized = 1;
  }

  static int isInitialized;

  static Object & getA()
  {
     if(isInitialized == 0)
     {
       init();
     } 
     return A;
  }
  // similarly B

};