gpt4 book ai didi

c++ - 如何直接调用转换运算符?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:09:46 25 4
gpt4 key购买 nike

struct Bob
{
template<class T>
void operator () () const
{
T t;
}

template<class T>
operator T () const
{
T t;
return t;
}
};

我可以像这样直接调用 Bob 的 operator()

Bob b;
b.operator()<int>();

如何直接调用带有特定模板参数的转换运算符?

Bob b;
std::string s = b.???<std::string>();

不可能使用static_cast

Bob b;
std::string s = static_cast<std::string>(b);

http://ideone.com/FoBKp7

错误:重载“basic_string(Bob&)”的调用不明确

问题如何直接使用模板参数调用或者这是不可能的。我知道有使用包装函数的解决方法。

最佳答案

您可以像这样直接(明确地)调用它:

Bob b;
std::string s = b.operator std::string();

但它不是“具有特定模板参数”(但没有必要)。

另见 WhozCraig's comment

关于c++ - 如何直接调用转换运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18539040/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com