C++ 私人班的朋友
如何为私有类定义朋友C++ 私人班的朋友,c++,friend,C++,Friend,如何为私有类定义朋友 #include <iostream> class Base_t{ private: struct Priv_t{ friend std::ostream & operator<<(std::ostream &os, const Priv_t& obj); } p; friend std::ostream & operator<<(s
#include <iostream>
class Base_t{
private:
struct Priv_t{
friend std::ostream & operator<<(std::ostream &os, const Priv_t& obj);
} p;
friend std::ostream & operator<<(std::ostream &os, const Base_t& obj);
};
std::ostream & operator<<(std::ostream &os, const Base_t& obj) {
return os << "base: " << obj.p;
}
std::ostream & operator<<(std::ostream &os, const Base_t::Priv_t& obj) {
return os << "priv";
}
int main() {
Base_t b;
std::cout << b << std::endl;
}
#包括
类基类{
私人:
私有结构{
friend std::ostream&operator对于Priv\u t
的重载必须是Base\u t
以及Priv\u t的朋友,而Priv\u t
是一个私人声明,您应该移动
friend std::ostream & operator<<(std::ostream &os, const Base_t::Priv_t& obj);
友谊必须明确:
class Base_t
{
//...
private:
//...
// Add:
friend std::ostream & operator<<(std::ostream &os,
const Base_t::Priv_t& obj);
};
class-Base\t
{
//...
私人:
//...
//加:
friend std::ostream&Operator下一篇没有行号的代码帖子,请!
friend std::ostream & operator<<(std::ostream &os, const Base_t::Priv_t& obj);
class Base_t
{
private:
struct Priv_t
{
} p;
friend std::ostream & operator<<(std::ostream &os, const Base_t& obj);
friend std::ostream & operator<<(std::ostream &os, const Base_t::Priv_t& obj);
};
class Base_t
{
//...
private:
//...
// Add:
friend std::ostream & operator<<(std::ostream &os,
const Base_t::Priv_t& obj);
};