Parent.Function();
должно быть object.Function();
и таким же для дочернего объекта.
Обратите внимание, что вы передаете копию дочернего объекта, и она будет разрезана, потому что поведение polymorphi c может быть демонстрируется указателями или ссылками, а не обычными объектами.
У вас есть много опечаток, таких как Class
, Public
и ;
в неправильных местах.
Обратите внимание, что
void Test(Parent Object)
{
Object.Function();
}
Это неправильно, поскольку Parent
является абстрактным классом, и вы не можете создавать объекты абстрактных классов.
Ниже приведен пример того, что вы хотите сделать с помощью указателей
#include<iostream>
class Parent
{
public:
Parent(){}
virtual ~Parent(){}
virtual void Function() = 0;
};
class Child : public Parent
{
public:
Child(){}
~Child(){}
void Function(){
std::cout<< "In Child";
}
};
void Test(Parent* object)
{
object -> Function();
}
int main()
{
Parent* parentPtrToChild = new Child;
Test(parentPtrToChild);
delete parentPtrToChild;
return 0;
}
ИЛИ используйте следующее со ссылками
void Test(Parent& object)
{
object.Function();
}
int main()
{
Child childObj;
Test(childObj);
return 0;
}