You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Arduino自定义类返回String报错:无法将String转换为int

自定义类返回String类型报错:无法将String转换为int

问题场景

在Arduino环境下自定义Lightbox类,尝试返回私有成员String audioTrack时编译报错,错误提示无法将String转换为int。

头文件(Lightbox.h)

#ifndef LIGHTBOX_H
#define LIGHTBOX_H

#include <Arduino.h>

class Lightbox
{
  private:
    String audioTrack;
  public:
    getTrack();
};

#endif

类实现文件(Lightbox.cpp)

#include "Lightbox.h"
//#include "Adafruit_Soundboard.h"

Lightbox::getTrack()
{
  return audioTrack;
}

错误信息

Lightbox.cpp: In member function 'int Lightbox::getTrack()':
Lightbox.cpp:30:10: error: cannot convert 'String' to 'int' in return
   return audioTrack;
          ^~~~~~~~~~

exit status 1

Compilation error: cannot convert 'String' to 'int' in return

尝试过在函数内定义临时String变量返回,依旧报错;去掉return语句可正常编译。


错误原因

C++(Arduino基于C++)中,如果函数声明时未指定返回值类型,编译器会默认将其视为返回int类型。你的getTrack()函数无论在头文件声明还是实现时都未指定返回类型,因此编译器判定它应返回int,但实际返回的是String类型,类型不匹配导致报错。


正确解决方案

需在函数声明和实现时明确指定返回类型为String:

修正后的头文件(Lightbox.h)

#ifndef LIGHTBOX_H
#define LIGHTBOX_H

#include <Arduino.h>

class Lightbox
{
  private:
    String audioTrack;
  public:
    // 明确指定返回类型为String
    String getTrack();
};

#endif

修正后的类实现文件(Lightbox.cpp)

#include "Lightbox.h"
//#include "Adafruit_Soundboard.h"

// 同样指定返回类型为String
String Lightbox::getTrack()
{
  return audioTrack;
}

这样编译器能识别函数返回类型为String,与实际返回的变量类型匹配,编译即可通过。


内容的提问来源于stack exchange,提问作者Matthew Cain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 20:02:06