无法将参数 1 从 'int' 转换为 'int &'
cannot convert argument 1 from 'int' to 'int &'
我收到下一个错误,但找不到原因:
错误 C2664 "void SumID
::运算符 (( (G &(":无法将参数 1 从"int"转换为"int &">
为什么通过引用传递 int 有问题?
我有下一堂课:
template <class T>
class SumID {
private:
T sumid;
public:
SumID():sumid()
{
}
SumID(T s)
{
sumid = s;
}
T getSumID()
{
cout << "inside getSum";
return sumid;
}
template <class G>
void operator() (G& a)
{
sumid = sumid+ a;
}
};
我的主要 :
SumID<long> s;
for (int i = 0; i < 5; i++)
s(5); // <-- error here
s(5);
参数使用时,5 不是左值。因此,当参数类型为G&
时,不能使用它。
您可以使用以下一种或两种方法解决问题。
-
创建一个变量并在调用中使用它。
int x = 5; s(x);
-
将参数类型更改为仅
G
、G&&
或G const&
。template <class G> void operator() (G a) // Or (G&& a) or (G const& a) { sumid = sumid+ a; }
相关文章:
- 是否可以从int转换为enum类类型
- 如何在C++中将一个无符号的 int 转换为两个无符号的短裤?
- 是什么导致了这种使用三进制而不是短整型的有符号int到无符号int转换
- 将字符串中的 int 转换为字母;
- 主.cpp:18:20:错误:从"int*"转换为"int"会失去精度 [-fa
- 将非常大的 int 转换为双倍,在某些计算机上会损失精度
- 如何将矢量<int>转换为字符数组?
- C++ 无法从 const int* 转换为 const_iterator
- 我不断收到错误 C2440'=':无法从"int *(__cdecl *)(int *,int *,int,int)"转换为"int *
- 如何将 int[4] 转换为 std::array<int,4>?
- 如何将data[i].int转换为vaible
- 将 int 转换为字符串,然后连接另一个变量以创建完整扩展名,然后将其转换为 const_char*
- 将私有矩阵形式 int 转换为双 C++
- 无法将参数 1 从 'int' 转换为 'int &'
- 将 int 转换为字符串后始终得到 0
- isspace 函数的性能警告,从 int 转换为布尔值
- 将大 int 转换为浮点数,而不舍入 c++
- 错误:无法将'uint8* {aka unsigned int*}'转换为"常量emxArray_uint8_T*"?
- 将未签名的INT转换为BCD
- 在 C++ 中将 int 转换为双精度