如何在 main() 函数之外制作形状

Posted

技术标签:

【中文标题】如何在 main() 函数之外制作形状【英文标题】:How to make a shape outside of the main() function 【发布时间】:2014-09-08 14:43:37 【问题描述】:

我知道如何定义一个形状(这里是一个矩形)并将其附加到 C++ 中的窗口,如下所示:

  #include <Simple_window.h>

void cir()  Circle c(Point(100,100),50); 

int main()

  Simple_window win(Point(100,100),600,400, "test");

  Rectangle r(Point(100,100),Point(300,200));
  win.attach(r);
  win.wait_for_botton();


但是如何在main() 之外定义一个形状(比如cir() 函数的circle) 函数是如何在 cir() 函数内部创建一个圆圈,当我在 main() 函数中调用它时它会返回该圆圈,以便我可以将它附加到窗口 win 上以使其可见?

PS:我只是通过 PPP 书 (this) 学习了 C++,直到第 14 章结束 :-)

【问题讨论】:

您可以通过引用win 变量将cir 方法传递给方法并在方法内附加圆圈。 【参考方案1】:

大概是这样的吧?

  #include <Simple_window.h>

  Circle c(Point(100,100),50);

  int main()
  
    Simple_window win(Point(100,100),600,400, "test");

    Rectangle r(Point(100,100),Point(300,200));
    win.attach(r);
    win.attach(c);
    win.wait_for_botton();
  

或者,如果你想使用你的 cir 函数:

Circle cir()

  Circle c(Point(100,100),50);
  return c;


int main()

  Simple_window win(Point(100,100),600,400, "test");

  Rectangle r(Point(100,100),Point(300,200));
  win.attach(r);
  win.attach(cir());
  win.wait_for_botton();

或者也许你想做这样的事情,从你的问题中很难知道:

// The & is important, it will pass this argument as a reference
void attachCircleToWindow(Simple_window &win) 

  Circle c(Point(100,100),50);
  win.attach(c);


int main()

  Simple_window win(Point(100,100),600,400, "test");

  Rectangle r(Point(100,100),Point(300,200));
  win.attach(r);
  attachCircleToWindow(win);
  win.wait_for_botton();

【讨论】:

cir() 具有 void 返回类型。 win.attach(cir()); 会出错。 是的,乔希。扩展了我的答案。 我尝试了与您上一个代码类似的方法,但出现了很多错误! 对于您的第二个代码,我得到了这个错误 错误 8 错误 C2248: 'Graph_lib::Shape::Shape' : 无法访问在类 'Graph_lib::Shape' c:\ 中声明的私有成员program files\microsoft visual studio 11.0\vc\include\graph.h 290 第三个我得到了this errors。 没有办法吗!?

以上是关于如何在 main() 函数之外制作形状的主要内容,如果未能解决你的问题,请参考以下文章

如何在颤动中制作自定义按钮形状

如何在形状xml中的笔划两侧制作圆角

如何在 css 和 jquery 中使用形状制作动画?

如何在 Canvas 中制作药丸形状? (基本上是圆角矩形)

我正在尝试在 xml 中创建这个形状,如何制作它?

如何制作非矩形形状的图像