c – 允许将类指定为零

我正在编写模板函数,我想将模板变量初始化为零.我在考虑将变量设置为零,然后让类类型定义自己的“零”定义:

T data = 0;

我试过重载赋值运算符:

class Example{
public:
    int data;
    Example(){}
    Example& operator=(int v){
        data = v;
        return *this;
    }
};

template <class T> T test(){
    T data = 0;
    return data;
}

int main(int argc, char** argv){
    double v1 = test<double>();
    Example v2 = test<Example>();
    return 1;
}

…但编译器给我“错误:从’int’转换为非标量类型……”.我怎样才能做到这一点?或者有更好的方法来做我想做的事情吗?

最佳答案 你的代码的问题是T data = 0;实际上调用构造函数,而不是operator =.因此,为了使代码能够工作,您需要声明一个接受int的构造函数.

点赞