C++ 对象和运算符重载C++; 类对象\u 1 { 公众: ... 流和操作符的朋友
AFAICT、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
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&operatorostream&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;
}