从int到用户定义的类c ++的显式转换

时间:2017-08-26 13:36:29

标签: c++

如何从用户定义的类Foo中启用显式转换,例如int?

我从int到Foo做了一个转换构造函数,但是它呢?我可以将一个强制转换操作符从Foo重载到int,但这不是我想要的。

有没有办法启用这段代码?

int i = 5;
Foo foo = (Foo)i;

3 个答案:

答案 0 :(得分:2)

了解converting constructor

如果不将构造函数设置为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