初学者C ++,"没有匹配函数调用"在构造函数

时间:2015-12-05 21:13:31

标签: c++ arduino

我正在尝试启动我的第一个Arduino项目,一个小巧的8位掌上游戏机。

所以,我正努力做我的第一堂课。我对CPP非常陌生,过去我做过很多C#和java。

这是我的代码:

#include <SPI.h>
#include <TFT.h>

class Menu {
  String menuTitle = "Menu";
  TFT TFTscreen;
  public:
    Menu(String title, TFT screen)
    {
      menuTitle = title;
      TFTscreen = screen;
    }

    void Update() {
      TFTscreen.setTextSize(2);
      TFTscreen.text(menuTitle, 0, 0);
    }
};

我在Menu构造函数上出错,它说&#34;没有匹配函数来调用&#39; TFT :: TFT()&#39; &#34 ;.为什么会这样?为什么我不能像

那样运行构造函数
Menu menu = new Menu("Test Menu", scrn);

我缺少什么和/或我该做什么?

还有一些问题: 进入CPP的好地方在哪里?它有点不同&#34;来自C#。我不明白&#34;指针&#34;的全部内容。还有其他一些事情。

还有一个: 如果你碰巧知道任何关于Arduino的事情,有没有什么方法可以在arduino上运行C#代码呢?无需插入计算机?

谢谢你们!

1 个答案:

答案 0 :(得分:2)

从错误消息中可以看出,类TFT没有默认构造函数(可以不带参数调用的构造函数)。

检查班级定义。

发生错误是因为调用了类TFT

的默认构造函数
class Menu {
  String menuTitle = "Menu";
  TFT TFTscreen;
  ^^^^^^^^^^^^^^
  public:
    Menu(String title, TFT screen)
    {
      menuTitle = title;
      TFTscreen = screen;
    }
    //...

您可以按以下方式编写Menu构造函数

Menu( const String &title, const TFT &screen ) : menuTitle( title ), TFTscreen( screen )
{
}

(我不确定String是否是有效的类名)

因为C ++不是C#,你可能不会写

Menu menu = new Menu("Test Menu", scrn);

你必须写

Menu *menu = new Menu("Test Menu", scrn);

或者看起来你可以写简单

Menu menu("Test Menu", scrn);