我正在编写一个模板函数,我想将一个模板变量初始化为零。我正在考虑将变量设置为零,然后让类类型定义自己的“零”定义:
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
的构造函数。
关于c++ - 允许将类分配为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40771842/