我認爲朋友函數可以訪問類變量,就像我在如何嘗試在函數中執行v.x,v.y,v.z一樣。但它不編譯。它說它無法解決這些線路上的標識符。朋友函數無法訪問類變量並且無法理解命名空間
另外我想了解如何使用命名空間。即使我在實現文件中使用命名空間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;
}
什麼*確切*錯誤(S)說? – 0x499602D2 2013-02-12 00:33:08
它說「無法解析標識符x」。然後下一行「無法解析標識符y」。並且「無法解析標識符z」。 – user1884814 2013-02-12 00:35:12