我如何拆分 fltk 代码和定义

Posted

技术标签:

【中文标题】我如何拆分 fltk 代码和定义【英文标题】:how do i split up fltk code and definitions 【发布时间】:2021-05-22 22:58:06 【问题描述】:

这是我的第一个 C++ 项目。我有 1600 行代码,大部分在使用 FLTK 小部件的包含文件中,我想按照我经常看到的推荐方式拆分类定义和代码。我已经尝试了无数次来弄清楚什么地方去了,我总是得到编译器错误。

我一直在尝试下面的一些示例代码。我需要做的就是编译并显示一个窗口。

main.cpp

#include <FL/Fl.H>
#include <FL/Fl_Window.H>
#include "mybox.h"

int main(int argc, char *argv[]) 

    Fl_Window *w = new Fl_Window(100, 100, 300, 300);
    mybox *b = new mybox(110, 110, 100, 100);
    end();
    b->show();
    return Fl::run();

mybox.h

#ifndef MYBOX_H
#define MYBOX_H
#include <FL/Fl.H>
#include <FL/Fl_Box.H>
#include "mybox.h"

class mybox : public Fl_Box 
public:
    mybox(int x, int y, int w, int h, const char *lbl) : Fl_Box(x, y, w, h, lbl) 
;

#endif // MYBOX_H

mybox.cpp

#include <FL/Fl.H>
#include <FL/Fl_Box.H>
#include "mybox.h"

mybox::mybox(int x, int y, int w, int h, const char *lbl) : Fl_Box(x, y, w, h, lbl)

我看到很多关于原型重新定义的错误;缺少原型;在 bar 之前预期 foo 等。有人可以赐教吗? -戴夫

【问题讨论】:

Srsly??你#include "mybox.h"mybox.h 想知道为什么我的硬盘会被填满 :) 【参考方案1】:

你把你的构造函数的定义放在两个地方,所以你需要从这里删除它:

class mybox : public Fl_Box 
public:
    mybox(int x, int y, int w, int h, const char *lbl); // removed
;

【讨论】:

#ifndef MYBOX_H #define MYBOX_H #include #include class mybox : public Fl_Box public: mybox(int x, int y, int w , int h, const char *lbl); ; #endif // MYBOX_H 错误:没有匹配函数调用‘mybox::mybox(int, int, int, int) 好的,最后一个错误是由于没有使用 lbl arg 调用 - 它现在编译 tx

以上是关于我如何拆分 fltk 代码和定义的主要内容,如果未能解决你的问题,请参考以下文章

FLTK 事件映射/多线程

如何在函数中调用 FLTK 代码?

如何向 FLTK 弹出对话框添加超时

如何使用 FLTK 在 Windows、Mac OS X 和 Linux 中使窗口透明?

如何将 FLTK 库添加到 netbeans 项目中

用于 VS2019 的 circa-2011 代码库的 FLTK 2.0 构建和演示