Qubitを表すクラスを作成しました。そのため、オブジェクトには1つの値state(0または1(bool))しかありません。必要な計算を行うために、+、*、^のような演算子をオーバーロードしました。 すべてのものは+と*、また^でも使用できますが、std :: ostream演算子では使用しない場合に限ります。XOR演算子とstd :: ostream演算子
Qubit x5, x6;
cout << x5^x6; !ERROR!
しかし
Qubit x5, x6;
Qubit z = x5^x6;
cout << z;
でそれが働いています。私はstd:オペレータ
std::ostream & operator <<(std::ostream & os, const Qubit & qubit)
{
os << qubit.GetState();
return os;
}
と私のXOR演算
Qubit & Qubit::operator ^(const Qubit & qubit)
{
Qubit *q = new Qubit;
((this->state == 1 && qubit.state == 0) ||
(this->state == 0 && qubit.state == 1)) ? q->SetState(1) : q->SetState(0);
return *q;
}
を参照してください。C++の本に戻って、演算子の優先順位に関する章を参照してください。 –
http://en.cppreference.com/w/cpp/language/operator_precedence –
'operator ^'関数でメモリリークが発生しました。また、[演算子オーバーロード](http://en.cppreference.com/w/cpp/language/operators)、特に正規の[2進算術演算子]セクション(http://en.cppreference.com/w/cpp)を参照してください。 /言語/演算子#Binary_arithmetic_operators)。参考にするのではなく、値*で*を返すように指示する例に注目してください。 –