C++ 对象和运算符重载C++; 类对象\u 1 { 公众: ... 流和操作符的朋友

C++ 对象和运算符重载C++; 类对象\u 1 { 公众: ... 流和操作符的朋友,c++,C++,AFAICT、object\u 1和object\u 2是不相关的类(除了它们是朋友)。所以object\u 2没有任何与object\u 1相关的状态 因此,当您试图将对象_2当作对象_1打印时,这是不可能的。令人惊讶的是,此调用居然可以工作: ostream& operator<<(ostream& out, const object_2& obj_2) { object1::display(out) //Calls method display in

AFAICT、
object\u 1
object\u 2
是不相关的类(除了它们是朋友)。所以
object\u 2
没有任何与
object\u 1
相关的状态

因此,当您试图将
对象_2
当作
对象_1
打印时,这是不可能的。令人惊讶的是,此调用居然可以工作:

ostream& operator<<(ostream& out, const object_2& obj_2)
{
object1::display(out)  //Calls method display in object1's I.F.
return out;
} 

ostream&operator
ostream&operator希望对象_2从对象继承_1@lampshade:好的,那就让
object_1
成为
object_2
的基类吧。你可能想保护成员,这样
object_2
就可以访问它们了。谢谢你,L先生,你帮了我很大的忙=)唤起了我忽略的许多问题中的另一个。这只是一个简单的修复!=)我假设“object1”与“object\u 1”相同,但“stock”也是“object\u 1”吗?“display”是一个静态方法吗?在上一个代码段中的调用中,它似乎是静态的,但定义(如果“stock”和“object1”相同)似乎不是一个静态的方法。我不知道在这个星期天早上我是否比平时慢,但是你选择的代码对我来说似乎有点混乱。
ostream& operator<<(ostream& out, const object_2& obj_2)
{
object1::display(out)  //Calls method display in object1's I.F.
return out;
} 
void object_1::display(std::ostream &out)
{
out << left  << setw(28) << "Person"   << setw(20) << "Place" ;
out << right << setw(5)  << "Thing"   << setw(5)  << "Idea" << endl;

out << left  << setw(28) << "----"   << setw(20) << "--------" ;
out << right << setw(5)  << "----- " << setw(5)  << "------" << endl;
} 
ostream& operator<<(ostream& out, const object_2& obj_2);
ostream& operator<<(ostream& out, const object_1& obj_1)
{
out << obj_1.pCh_mem1 << obj_1.pCh_mem2;
return out;
}  
static void method1() 
{ 
 //do stuff 
}
static void method2() 
{
  //do stuff
}
static void method3() 
{
  //do stuff 
}
int main(void)
{
    method1();
    method2();
    method3();
    cout << obj_2;
    return 0; // and such
}
ostream& operator<<(ostream& out, const object_2& obj_2)
{
object1::display(out)  //Calls method display in object1's I.F.
return out;
} 
ostream& operator<<(ostream& out, const object_2& obj_2)
{
object1::display(out)  //Calls method display in object1's I.F.
return out;
}
ostream& operator<<(ostream& out, const object_2& obj_2)
{
    out << object_1[thatIndexThatIstoreditAt]
    return out;
}