私はそれがint
であるかのように相互作用できる構造を作成しようとしています。私はそれに値を代入しようとすると、しかし、それはコンパイル時に次のエラーがスローされます。カスタム構造体は、あたかもintであるかのように相互作用しますか?
Invalid conversion from `int` to `int32*`
なぜそれが私はそれがconst int
値にint32
を設定処理するために=
オペレータの作られていても、そのエラーをスローしません?
ここ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
を使用することをお勧めしないでください。私は(そうでない場合、私はちょうどで開始するint32_t
を使用していたと思います;)理由struct
自分を作ってるんだあなたのコメントから判断
避けポインタを:
は使用し、代入演算子を呼び出します。 'int32 *'はトラブルの原因です(ここには表示されていません) –'int32 *'ではなく 'int32'を使用している理由は何ですか? – templatetypedef
エラーの原因となるコードを投稿する必要があります。 – Galik