gpt4 book ai didi

C++ 模板赋值运算符重载——将原始类型分配给对象?

转载 作者:搜寻专家 更新时间:2023-10-31 00:39:07 24 4
gpt4 key购买 nike

在 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++ 实现?

最佳答案

您遇到了“令人烦恼的解析”。 Variable<int> intVar();声明一个函数,而不是一个对象; ()错误消息中类型说明末尾的 表示函数类型。

你想要Variable<int> intVar;声明和默认初始化一个对象。

如果您需要值初始化而不是默认初始化,那么您的选择是:

Variable<int> intVar{};                 // C++11 or later
Variable<int> intVar = Variable<int>(); // Historic dialects

关于C++ 模板赋值运算符重载——将原始类型分配给对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16818693/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com