指向对象指针的无效指针 我正在开发一个C++的McBand微控制器的GUI,我有一些问题。

指向对象指针的无效指针 我正在开发一个C++的McBand微控制器的GUI,我有一些问题。,c++,pointers,mbed,C++,Pointers,Mbed,情况是: 具有小部件虚拟父函数的不同小部件类(按钮、滑块…)。然后是一个虚拟函数布局,其中还包含(gridLayout,…)等类。布局具有类似layout.add(*widget)的功能,可将小部件指针添加到向量。 然后,我有一个控制器功能来处理触摸事件,并使用当前的活动布局来检查触摸的x,y坐标处布局中的正确小部件 现在我想在widget类中添加一个指向布局的指针,以便控制器类可以在需要时更改activeLayout。还有一个函数指针,这样控制器可以在使用小部件时运行特定的函数 现在的问题是:

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

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

现在的问题是:我想这样做:

Button::Button(char* text_, int color_, void *function_, Layout *layout_): text(text_), color(color_), function(function_), layout(layout_){}
但是我需要包含布局类,布局类已经包含小部件类-->错误!最简单的方法是什么?我已经尝试了void*指针,然后对布局进行静态转换,但没有成功

我还需要在每个小部件和布局中包含一个TFT类,最简单的方法是什么?现在我有一个显示屏。h,里面有:

#ifndef DISPLAY_H
#define DISPLAY_H

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

#endif
但我真的不认为这是做这种事情的正确方式


非常感谢你的帮助

解决方案是:在每个类中使用前向声明<代码>类布局

然后对于TFT类,我必须使用
extern SPI_TFT屏幕
在main.cpp中,我制作了
SPI_TFT屏幕(LCD_SDI、LCD_SDO、LCD_SCK、LCD_CS,“屏幕”)


(非常感谢T.NIEES,轨道上的亮度竞赛和Jan Hudec)

所以C XOR C++?“代码>虚空*/COD>在两种语言中的用法不同。对不起,它是C++(在主题中添加了C++)。我不确定是否正确理解了你的问题,但我认为你正在寻找一个类的前向声明(<代码>类布局;< /代码>)。转发声明就是解决方案。好吧,我只需在Widget.h中添加类布局,它就可以工作了?我应该在SPI_TFT屏幕上也这样做,还是使用类似extern的东西?