从我的类转换为int
Conversion from my class to int
我使用的是一个模板化的库,我不想修改它。即CImg。这个库主要用于处理简单类型的模板:float、double、int等。
在某种程度上,这个库确实做到了:
CImg<T>& fill(const T val) {
if (is_empty()) return *this;
if (val && sizeof(T)!=1) cimg_for(*this,ptrd,T) *ptrd = val;
else std::memset(_data,(int)val,size()*sizeof(T));
return *this;
}
现在,我想将这个库与一个更复杂的类一起用作模板参数。我的特定类是这样的,sizeof(T)!=1
和大多数时候,fill
函数将用我的类的正确operator=
将val
正确地分配给每个元素。然而,当使用!val
时,我想要一个转换运算符,它允许将我的类强制转换为int
并生成一些值(例如,0
将使上面的函数起作用)。
现在,我的程序并没有按照它说的那样编译:
error C2440: 'type cast' : cannot convert from 'const MyClass' to 'int'
在不修改上面的函数的情况下,如何创建一个允许(int)my_variable
和类型为MyClass
的my_variable
合法的运算符?
使用用户定义的转换
int type;
explicit operator int()
{
return type;
}
在这种情况下,您想要的可能是int转换运算符重载:
class A{
public:
explicit operator int() const{
return 2;
}
};
编辑:|我添加了显式转换,它应该使您的代码能够编译(至少是您向我们展示的方法),并且不会弄乱其他运算符,但它只在C++11之后才被允许,所以如果您使用的是较旧的编译器,它可能还不可用。
相关文章:
- 是否可以从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 转换为双精度