私はVector3
c ++で3次元ベクトルクラス(と呼ばれる)を作成しています。現在、<<
ベクトルのすべてのコンポーネントを一度に直接出力できるように、ストリーム挿入演算子 ( ) をオーバーロードしようとしています。MSDからシンタックスをコピーしましたが、3 つのエラーが発生します。
エラー: 'const Vector3' を 'float Vector3:: getX() ' の 'this' 引数として渡すと、修飾子が破棄されます [-fpermissive]
エラー: 'const Vector3 ' を 'float Vector3:: getY () ' の'this' 引数として渡します修飾子を破棄します [-fpermissive]
エラー: 'const Vector3 ' を 'float Vector3:: getZ ()' の 'this' 引数として渡すと、修飾子が破棄されます [-fpermissive]
(違いは太字で示されています)
Vector3.h
public の下に、次の関数宣言を入力しました。
friend ostream& operator<<(ostream &os, const Vector3 &vector);
でVector3.cpp
、私はそれを実装しました:
ostream& operator<<(ostream& os, const Vector3& vector)
{
os << "(" << vector.getX() << ", " << vector.getY() << ", " << vector.getZ() << ")" << endl;
return os;
}
(x, y, z)
x、y、および z 変数に従って、次のように出力する必要があります。
余談ですが、ベクトル オブジェクトはアドレス ポインターであるため、vector.getX()
行ではドットの代わりに を使用しないでください。->