Swig c++ 转 lua 自定义类型构造函数将字符串识别为双精度浮点数

我正在尝试使用 Swig 将我的 C++ 结构体返回给 lua,我希望它有两个构造函数,它们分别接受字符串或双精度浮点数作为参数。

struct MyType
{
    MyType(const std::string & arg)
    {
        std::cout << "字符串构造函数\n";
    }

    MyType(double arg)
    {
        std::cout << "双精度浮点数构造函数\n";
    }
}

在 Lua 中运行

MyType("3.14")
> 双精度浮点数构造函数

strInput = "3.14"
print(type(strInput))
> 字符串
MyType(strInput)
> 双精度浮点数构造函数

而且看起来字符串被解析为双精度浮点数。所以如果我想从双精度浮点数构造函数中打印参数,它将是3.14。

可能会发生任何隐式转换为双精度浮点数吗?

点赞