如何解决参数中默认构造函数导致的模糊函数重载问题

Vit*_*ali 1 c++ gcc g++

假设我有这个课程:

class Foo {
public:
   void member(std::string s);
   void member(int64_t &n);
};
Run Code Online (Sandbox Code Playgroud)

现在我想做点什么

int64_t value = 5;
Foo f;
f.member(value);
Run Code Online (Sandbox Code Playgroud)

问题是编译器(至少是GCC)感到困惑并且认为我正在尝试使用char*构造函数使用字符串调用成员:

invalid conversion from 'int64_t' to 'const char*

如何在不更改方法签名的情况下调用我想要的实际成员函数?模板是唯一的解决方案吗?我在没有任何帮助的情况下尝试过施放(这应该没关系,因为类型已经明确无误).


对不起 - 发现了错误.

宣言是:

class Foo {
public:
    void member(std::string s);
    void member(int64_t &n);
};
Run Code Online (Sandbox Code Playgroud)

删除by-ref解决了它.

Nat*_*hen 5

将参数强制转换为与所需重载的参数类型完全匹配:

f.member((int64_t) value);
Run Code Online (Sandbox Code Playgroud)