C++ 使用重载运算符打印对象的动态数组<&书信电报;在c++;

C++ 使用重载运算符打印对象的动态数组<&书信电报;在c++;,c++,arrays,pointers,polymorphism,operator-overloading,C++,Arrays,Pointers,Polymorphism,Operator Overloading,我需要使用重载的从一个动态数组打印出一组对象。问题是,一个人是一个对象(根据你的说法,我们可以对此进行哲学思考,但没问题),因此他可以访问对象的所有受保护和公共方法。但是对象不是人,所以它不知道如何使用在人中定义的方法(例如操作符) 您可以直接将人转换为对象,就像您所做的那样。但不是一个人的目标,就像你试图暗示的那样 通常会使用虚拟函数来生成所需的行为,但正如您所说,这很棘手,因为operatorWell确实有Object的getName()成员,并且您是否有运算符您只重载了指向Person的指

我需要使用重载的从一个动态数组打印出一组对象。问题是,一个人是一个对象(根据你的说法,我们可以对此进行哲学思考,但没问题),因此他可以访问对象的所有受保护和公共方法。但是对象不是人,所以它不知道如何使用在人中定义的方法(例如操作符)

您可以直接将人转换为对象,就像您所做的那样。但不是一个人的目标,就像你试图暗示的那样


通常会使用虚拟函数来生成所需的行为,但正如您所说,这很棘手,因为operatorWell确实有
Object
getName()
成员,并且您是否有
运算符您只重载了指向
Person
的指针的输出运算符,不是指指向
对象的指针。
另外,
新对象*[sizeof(p)]
非常可疑,而且不会做你认为它会做的事情(我认为)。为什么所有这些指针,兄弟?我得到了一个无意义的值--
sizeof(p)
sizeof(Person*)
相同,或者基本上是指针的大小(通常是4或8). 这就是你想做的吗?--规则指针——那么你会怎么看待一个不规则的指针?从我所理解的,你不能有一个虚拟的“是的,我完全错了”,由Loki Astari发布。我想它会是这样的,那太糟糕了。谢谢
ostream& operator<<(ostream& os, Person* dt)
{
    return os << dt->getName();//getName returns a char*
}
    Person *p = new Person("Dany", 4);
    Object** obj=new Object*[sizeof(p)];
    obj[0] = p;
    cout << obj << endl;