我正在尝试创建一个可以与之交互的结构,就好像它是一个int
. 但是,当我尝试为其赋值时,它会在编译时引发以下错误:
Invalid conversion from `int` to `int32*`
为什么它会抛出这个错误,即使我让它的=
操作符来处理将 an 设置int32
为一个const int
值?
这是我最好的尝试的源代码int32
:
struct int32
{
int32_t val;
int32(int val=0)
: val(val)
{
}
int32& operator=(const int value) // ex. int32 *i = 42;
{
val=value;
return *this;
}
int32 operator+(const int32& value) const
{
return int32(value.val+val);
}
int32 operator-(const int32& value) const
{
return int32(value.val-val);
}
int32 operator*(const int32& value) const
{
return int32(value.val*val);
}
int32 operator/(const int32& value) const
{
return int32(value.val/val);
}
int32 operator%(const int32& value) const
{
return int32(value.val%val);
}
bool operator==(const int32& value) const
{
return (val == value.val);
}
bool operator!=(const int32& value) const
{
return (val != value.val);
}
}
另外,请不要只推荐我使用int32_t
; 我自己struct
做是有原因的(否则我只是习惯于int32_t
开始;)