我寫了< <運營商的基本超負荷所以我添加了一個友元函數的類接口C2248錯誤
namespace Warehouse
{
namespace Dto
{
class Product;
class AbstractOrder : public ICloneableItem
{
protected:
unsigned long _id;
std::string _name;
std::vector<Product*> _products;
public:
AbstractOrder();
virtual ~AbstractOrder();
double computePrice() const;
void addProduct(Product* product);
void removeProduct(Product* product);
void removeAllProducts();
void setName(const std::string& name) { _name = name; }
std::string getName() const { return _name; }
unsigned long getId() const { return _id; }
std::vector<Product*> getProductList() const { return _products; }
friend std::ostream& operator<<(std::ostream& os, const AbstractOrder& ord);
};
}
}
裏面的實現文件裏面,這是函數的代碼
using namespace Warehouse::Dto;
....
std::ostream& operator<<(std::ostream& os, const AbstractOrder& ord)
{
os << "[" << ord._id << "] Order " << ord._name << ": " << ord.computePrice();
return os;
}
爲什麼我得到以下錯誤? 錯誤1錯誤C2248:'Warehouse :: Dto :: AbstractOrder :: _ id':無法訪問類'Warehouse :: Dto :: AbstractOrder'中聲明的受保護成員
實際上,我已經修復了它,將名稱空間之前的運營商< <上的實施文件。 我不明白的是爲什麼我必須這樣做,即使在執行文件中我已經使用使用命名空間Warehouse :: Dto指令?
可能重複的[未解析的外部符號的朋友功能](http://stackoverflow.com/questions/15430665/unresolved-external-symbol-for-friend-function) – Angew
可能重複的[C++的朋友功能不能訪問私人會員](http://stackoverflow.com/questions/15731414/c-friend-function-cant-access-private-members) –