如何从用户定义的类Foo中启用显式转换,例如int?
我从int到Foo做了一个转换构造函数,但是它呢?我可以将一个强制转换操作符从Foo重载到int,但这不是我想要的。
有没有办法启用这段代码?
int i = 5;
Foo foo = (Foo)i;
答案 0 :(得分:2)
如果不将构造函数设置为explicit
,它允许您将类型(构造函数接受)转换为(新构造的)类实例。
以下是示例
#include <iostream>
template<typename T>
class Foo
{
private:
T m_t;
public:
Foo(T t) : m_t(t) {}
};
int main()
{
int i = 0;
Foo<int> intFoo = i;
double d = 0.0;
Foo<double> doubleFoo = d;
}
答案 1 :(得分:1)
这样的事情:
struct Foo {
explicit Foo(int x) : s(x) { }
int s;
};
int main() {
int i = 5;
Foo foo =(Foo)i;
}
答案 2 :(得分:1)
您需要一个接受HashMap
int