我正在编写一个应该显示 Sierpinski 三角形的程序。为此,我首先为 cairo 创建了一个演示,因为我以前从未使用过 cairo;它只创建一行:
#include <glibmm.h>
#include <gtkmm.h>
Gtk::Window* W_Main;
Gtk::DrawingArea* D_Triangle;
Gtk::Button* B_Draw;
Gtk::Adjustment* A_Depth;
int on_D_Triangle_draw(const Cairo::RefPtr<Cairo::Context> cr) {
cr->set_source_rgb(0.0, 0.0, 0.0);
cr->set_line_width(4.0);
cr->move_to(0, 0);
cr->line_to(30, 30);
cr->stroke();
return 0;
}
int main(int argc, char** argv) {
auto app = Gtk::Application::create(argc, argv, "org.CENSORED.sierpinski");
auto builder = Gtk::Builder::create_from_file("sierpinski.glade");
builder->get_widget("W_Main", W_Main);
builder->get_widget("D_Triangle", D_Triangle);
builder->get_widget("B_Draw", B_Draw);
builder->get_widget("A_Depth", A_Depth);
D_Triangle->signal_draw().connect(sigc::ptr_fun(on_D_Triangle_draw));
app->run(*W_Main);
}
奇怪的是:显然,“on_D_Triangle_draw”函数必须返回一个整数!我首先尝试将其设为 void 函数,但随后编译器返回了一条完全无法理解的错误消息。
有人能给我解释一下这是怎么回事吗?此外,
0
是正确的返回值(在“最佳实践”的意义上)吗?