<< 関数で vx、vy、vz を実行しようとしているように、フレンド関数はクラス変数にアクセスできると考えました。しかし、それはコンパイルされません。それらの行で識別子を解決できないと言っています。
また、名前空間の使用方法を学ぼうとしています。実装ファイルで名前空間 vec を使用していますが、すべての前に Vector:: を含める必要があります。
ヘッダー ファイル:
#ifndef VECTOR_H
#define VECTOR_H
namespace vec {
class Vector {
private:
double x, y, z;
public:
Vector(double, double, double);
friend std::ostream& operator<<(std::ostream&, const Vector&);
};
}
#endif /* VECTOR_H */
.cpp ファイル:
#include "Vector.h"
#include <iostream>
using namespace vec;
//Constructor
Vector::Vector(double x1 = 0, double y1 = 0, double z1 = 0) {
x = x1;
y = y1;
z = z1;
}
//Have also tried adding vec:: and Vector:: before operator<< here.
std::ostream& operator<<(std::ostream& out, const Vector& v) {
out<<"<"<<v.x<<", "<<v.y<<", "<<v.z<<">";
return out;
}