我正在写一个模板函数,我想将一个模板变量初始化为零。我想设置的变量等于零,然后让类类型定义自己的“零”的定义:允许类被分配为零
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'转换为非标量类型...”。我该如何做这项工作?还是有更好的方式来做我想做的事情?
也许你想要一个'int'作为参数的构造函数。 –
这听起来像你应该真的[值初始化](http://en.cppreference.com/w/cpp/language/value_initialization)该变量,而不是将其设置为零。 (另外,'T data = 0;'试图从'0'构造'data',而不是将'0'分配给'data',这很让人困惑。) – user2357112
嗯,好吧,我没有意识到构造函数的语法工作原语。 – Azmisov