在C ++中是否可以重载对象的赋值运算符以接受基本类型?
例如
template< typename T>
class Variable
{
...
Variable<T>& operator=( const Variable<T>& )
{
mValue = 0;
return &this;
}
}
int l = 3;
Variable<int> intVar();
intVar = l;
如果我尝试这样做,我会收到以下错误
error: non-object type 'Variable<int> ()' is not assignable
我觉得我好像缺少了一些明显的东西 - 尽管这可以用C ++实现吗?
答案 0 :(得分:5)
你遇到过“令人烦恼的解析”。 Variable<int> intVar();
声明一个函数,而不是一个对象;错误消息中类型规范末尾的()
表示函数类型。
您希望Variable<int> intVar;
声明并默认初始化对象。
如果您需要价值初始化而不是默认初始化,那么您的选择是:
Variable<int> intVar{}; // C++11 or later
Variable<int> intVar = Variable<int>(); // Historic dialects