Arduino:未调用 C++ 类构造函数

问题描述

我有两个类如下:

在 A.hpp 文件我有

class A 
{
    constexpr char* m_flag_file{"/flag_file.txt"};
    constexpr bool m_default_flag{false};
    A();
    bool read ();
    void write (bool);
}

extern A a;

在 A.cpp 文件我有

A::A(){};
bool A::read()
{
    String str;
    //Read a flag from littleFS and return it.
    File file = LittleFS.open(m_flag_file,"r");
    if (true == file)
    {
        str = file.readString();
        file.close();
        return (str.equals("true"));
    }
    else
    {
        write(m_default_flag):
        return (m_default_flag);
    }
}

void A::write(bool f)
{
    File file = LittleFS.open(m_flag_file,"w");
    if (true == file)
    {
        file.write(f ? "true" : "false");
        file.close();
    }
}
A a;

在 B.hpp 文件我有

class B
{
   bool m_flag;
   B();
   bool getFlag ();
}

extern B b;

在 B.cpp 中我有

#include <A.hpp>
   B::B()
   {
       m_flag = a.read();
   }

   bool B::getFlag()
   {
       return (m_flag);
   }

   B b;

在 main.cpp 文件中,我读到标志 a.read() 函数返回 '1' 但 b.getFlag() 返回 '0'。

#include <A.hpp>
#include <B.hpp>

void setup()
{

Serial.println(String(a.read()));
Serial.println(String(b.getFlag()));
}

我使用: 平台核心 5.1.1 乐鑫_8266平台 v3.0.0

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)