Void指向对象指针的指针

时间:2014-01-26 18:09:59

标签: c++ pointers mbed

我正在用C ++开发一个mbed微控制器的GUI,我遇到了一些问题。

情况是: 具有窗口小部件虚拟父功能的不同窗口小部件类(按钮,滑块...)。然后是一个虚函数布局,也有像(gridLayout,...)这样的类。布局具有layout.add(* widget)等功能,可将小部件指针添加到矢量中。 然后我有一个处理触摸事件的控制器功能,并使用当前活动布局来检查触摸的x,y坐标中布局中正确的小部件是什么。

现在我想在窗口小部件类中添加指向布局的指针,以便控制器类可以在需要时更改activeLayout。还有一个函数指针,因此控件可以在使用窗口小部件时运行某个函数。

现在问题:我想做这样的事情:

Button::Button(char* text_, int color_, void *function_, Layout *layout_): text(text_), color(color_), function(function_), layout(layout_){}

但是我需要包含布局类,布局类已经包含了widget类 - >错误!最简单的方法是什么?我已经尝试过void *指针,然后静态转换为Layout,但这不起作用。

我还需要在每个小部件和布局中包含一个TFT类,最简单的方法是什么?现在我只有一个Display.h:

#ifndef DISPLAY_H
#define DISPLAY_H

static SPI_TFT Screen(LCD_SDI, LCD_SDO, LCD_SCK, LCD_CS,"Screen");

#endif

但我并不认为这是做正确事情的正确方法。

非常感谢你的帮助!

1 个答案:

答案 0 :(得分:0)

解决方案是:在每个班级使用前向声明。 class Layout;

然后对于TFT类我必须使用extern SPI_TFT Screen;而在我的main.cpp中我做了SPI_TFT Screen(LCD_SDI, LCD_SDO, LCD_SCK, LCD_CS,"Screen");

(非常感谢t.niese,Orbit的Lightness Races和Jan Hudec)